इस पेज पर, Street View Publish API में फिर से शुरू किए जा सकने वाले अपलोड का अनुरोध करने का तरीका बताया गया है. इस प्रोटोकॉल की मदद से, डेटा ट्रांसफ़र के दौरान कनेक्शन टूट जाने पर, अपलोड करने की प्रोसेस को फिर से शुरू किया जा सकता है. इस विकल्प का इस्तेमाल तब करें, जब:
- बड़ी फ़ाइलें अपलोड की जा रही हैं.
- नेटवर्क में रुकावट आने या ट्रांसमिशन में किसी अन्य तरह की गड़बड़ी होने की संभावना ज़्यादा होती है. उदाहरण के लिए, अगर किसी मोबाइल ऐप्लिकेशन से फ़ाइल अपलोड की जा रही है.
नेटवर्क की समस्या होने पर, फिर से शुरू किए जा सकने वाले अपलोड से बैंडविथ का इस्तेमाल भी कम किया जा सकता है. ऐसा इसलिए, क्योंकि आपको बड़ी फ़ाइलों को शुरू से अपलोड नहीं करना पड़ता.
अगर आपको भरोसेमंद नेटवर्क कनेक्शन पर छोटी फ़ाइलें भेजनी हैं, तो इसके बजाय सामान्य अपलोड का इस्तेमाल किया जा सकता है.
फिर से शुरू किए जा सकने वाले अपलोड सेशन को शुरू करना
uploadUrl पाने के बाद, फिर से शुरू किए जा सकने वाले अपलोड सेशन को शुरू किया जा सकता है:
POSTसेuploadUrlका अनुरोध करें.ये एचटीटीपी हेडर जोड़ें:
X-Goog-Upload-Protocol:resumableपर सेट करें.X-Goog-Upload-Header-Content-Length: इसे फ़ाइल के डेटा के बाइट की कुल संख्या पर सेट करें. यह डेटा, आने वाले अनुरोधों में ट्रांसफ़र किया जाएगा.X-Goog-Upload-Header-Content-Type: इसे फ़ाइल के MIME टाइप पर सेट करें.X-Goog-Upload-Command:startपर सेट करें.
अनुरोध भेजें.
उदाहरण: फिर से शुरू किए जा सकने वाले अपलोड सेशन को शुरू करना
यहां दिए गए उदाहरण में, नई फ़ाइल अपलोड करने के लिए फिर से शुरू किए जा सकने वाले सेशन को शुरू करने का तरीका बताया गया है. इस मामले में, फ़ाइल एक इमेज है और फ़ाइल में बाइट की कुल संख्या 4200000 है. ध्यान दें कि अनुरोध का मुख्य हिस्सा खाली है. इसलिए, Content-Length हेडर को 0 पर सेट किया गया है.
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234 HTTP/1.1
Authorization: Bearer [YOUR_AUTH_TOKEN]
Content-Length: 0
X-Goog-Upload-Protocol: resumable
X-Goog-Upload-Header-Content-Length: 4200000
X-Goog-Upload-Header-Content-Type: image/jpeg
X-Goog-Upload-Command: start
फिर से शुरू किए जा सकने वाले सेशन के यूआरएल को सेव करना लेख में बताया गया है कि फिर से शुरू किए जा सकने वाले अपलोड सेशन को शुरू करने के अनुरोध के लिए, रिस्पॉन्स को कैसे मैनेज करें.
फिर से शुरू किए जा सकने वाले सेशन का यूआरएल सेव किया जा रहा है
फिर से शुरू किए जा सकने वाले अपलोड सेशन को शुरू करने के लिए भेजे गए अनुरोध के जवाब में, सर्वर 200 OK एचटीटीपी स्टेटस कोड भेजेगा. इसमें यह हेडर शामिल होगा:
X-Goog-Upload-URL: यह एक यूनीक यूआरएल होता है. इसका इस्तेमाल, बाकी सभी अनुरोधों के ज़रिए अपलोड पूरा करने के लिए किया जाना चाहिए.
फिर से शुरू की जा सकने वाली कार्रवाई के यूआरएल को कॉपी करें और सेव करें, ताकि इसका इस्तेमाल बाद के अनुरोधों के लिए किया जा सके.
उदाहरण: फिर से शुरू किए जा सकने वाले सेशन का यूआरएल सेव करना
यहां दिए गए उदाहरण में, ऐसे जवाब को दिखाया गया है जिसमें फिर से शुरू किए जा सकने वाले सेशन का यूआरएल और साइज़ ग्रैनुलैरिटी की ज़रूरी शर्त शामिल है.
HTTP/1.1 200 OK
X-Goog-Upload-URL: https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable
फ़ाइल अपलोड की जा रही है
फिर से शुरू किए जा सकने वाले सेशन के साथ फ़ाइल अपलोड करने के दो तरीके हैं:
- एक ही अनुरोध में. आम तौर पर, यह तरीका सबसे अच्छा होता है. इसकी वजह यह है कि इसमें कम अनुरोधों की ज़रूरत होती है. इसलिए, इसकी परफ़ॉर्मेंस बेहतर होती है.
- एक से ज़्यादा हिस्सों में. इस तरीके का इस्तेमाल तब करें, जब:
- आपको किसी एक अनुरोध में ट्रांसफ़र किए गए डेटा की मात्रा कम करनी होगी. ऐसा तब करना पड़ सकता है, जब हर अनुरोध के लिए समयसीमा तय हो.
- आपको अपलोड की प्रोग्रेस दिखाने वाला एक कस्टम इंडिकेटर देना होगा.
- आपको यह पता होना चाहिए कि डेटा को कब मिटाना सुरक्षित है.
एक अनुरोध
एक ही अनुरोध में फ़ाइल अपलोड करने के लिए:
- फिर से शुरू किए जा सकने वाले सेशन के यूआरएल के लिए,
POSTअनुरोध बनाएं. - फ़ाइल का डेटा, अनुरोध के मुख्य हिस्से में जोड़ें.
ये एचटीटीपी हेडर जोड़ें:
Content-Length: इसे फ़ाइल में मौजूद बाइट की संख्या पर सेट करें.X-Goog-Upload-Command:upload, finalizeपर सेट करें.
अनुरोध भेजें.
अगर अपलोड करने के अनुरोध में रुकावट आती है या आपको 5xx जवाब मिलता है, तो अपलोड में आई रुकावट को फिर से शुरू करना में दिया गया तरीका अपनाएं.
एक से ज़्यादा हिस्सों में बंटा हुआ
फ़ाइल को कई हिस्सों में अपलोड करने के लिए:
- फिर से शुरू किए जा सकने वाले सेशन के यूआरएल के लिए,
POSTअनुरोध बनाएं. - अनुरोध के मुख्य हिस्से में, डेटा का हिस्सा जोड़ें. अपलोड पूरा करने वाले आखिरी हिस्से को छोड़कर, बाकी सभी हिस्से 2 MiB (मेगाबाइट) के मल्टीपल में बनाएं. चंक का साइज़ जितना हो सके उतना बड़ा रखें, ताकि अपलोड करने की प्रोसेस बेहतर तरीके से हो सके.
ये एचटीटीपी हेडर जोड़ें:
Content-Length: इसे चंक में मौजूद बाइट की संख्या पर सेट करें.X-Goog-Upload-Command:uploadपर सेट करें. आखिरी हिस्से के लिए,upload, finalizeपर सेट करें.X-Goog-Upload-Offset: इसे उस ऑफ़सेट पर सेट करें जहां बाइट लिखे जाने चाहिए. ध्यान दें कि बाइट को क्रम से अपलोड किया जाना चाहिए.
अनुरोध भेजें. अगर अपलोड करने के अनुरोध में रुकावट आती है या आपको
5xxजवाब मिलता है, तो अपलोड करने की प्रोसेस फिर से शुरू करना में दिया गया तरीका अपनाएं.फ़ाइल के बाकी बचे हर हिस्से के लिए, पहले से चौथे चरण तक की प्रक्रिया दोहराएं.
उदाहरण: फ़ाइल अपलोड करना
एक अनुरोध
यहां दिए गए उदाहरण में, एक ही अनुरोध में पूरी 42,00,000 बाइट की JPEG फ़ाइल अपलोड करने के लिए, फिर से शुरू किए जा सकने वाले अनुरोध को दिखाया गया है. इसमें, पिछले चरण में मिला फिर से शुरू किए जा सकने वाले सेशन के यूआरएल का इस्तेमाल किया गया है:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 4200000 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 0 [BYTES 0-4199999]
अनुरोध पूरा होने पर, आपको 200 OK एचटीटीपी स्टेटस कोड मिलता है.
एक से ज़्यादा हिस्सों में बंटा हुआ
यहां दिए गए उदाहरण में, 42,00,000 बाइट की JPEG फ़ाइल को कई हिस्सों में अपलोड करने के लिए, फिर से शुरू किए जा सकने वाले अनुरोध को दिखाया गया है. इसके लिए, फिर से शुरू किए जा सकने वाले सेशन के यूआरएल और पिछले चरण में मिली साइज़ ग्रेन्यूलैरिटी का इस्तेमाल किया गया है. इस उदाहरण में, 20,97,000 बाइट के चंक साइज़ का इस्तेमाल किया गया है. यह 2 MiB (मेबीबाइट) का मल्टीपल है.
पहला हिस्सा:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 2097000 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 0[BYTES 0-2096999]
दूसरा हिस्सा:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 2097000 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 2097000[BYTES 2097000-4193999]
पिछला हिस्सा:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 6000 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 4194000[BYTES 4194000-4200000]
अपलोड होने की प्रक्रिया बीच में रुक जाने पर उसे फिर से शुरू करना
अगर अपलोड करने का अनुरोध बीच में रुक जाता है या आपको 200 के अलावा कोई और एचटीटीपी स्टेटस कोड मिलता है, तो सर्वर से यह जानने के लिए क्वेरी करें कि कितना डेटा अपलोड हुआ:
- फिर से शुरू किए जा सकने वाले सेशन के यूआरएल के लिए,
POSTअनुरोध बनाएं. X-Goog-Upload-Commandकोqueryपर सेट करें.- अनुरोध भेजें.
सर्वर, 200 OK एचटीटीपी स्टेटस कोड और अपलोड किए गए फ़ाइल के मौजूदा साइज़ के साथ जवाब देगा:
HTTP/1.1 200 OK
X-Goog-Upload-Status: active
X-Goog-Upload-Size-Received: 100
इसके बाद, इस ऑफ़सेट से अपलोड करने की प्रोसेस फिर से शुरू की जा सकती है. आपको सर्वर से मिले ऑफ़सेट से ही अपलोड फिर से शुरू करना होगा. ऐसा तब तक करना होगा, जब तक कि आपने एक साथ अपलोड और फ़ाइनल करने का निर्देश न भेजा हो. ऐसा करने पर, ऑफ़सेट 0 से भी अपलोड फिर से शुरू किया जा सकता है.
अगर आपकी क्वेरी कमांड के एचटीटीपी रिस्पॉन्स में X-Goog-Upload-Status हेडर मौजूद है और इसकी वैल्यू active नहीं है, तो इसका मतलब है कि अपलोड पहले ही बंद कर दिया गया है.