इस पेज पर, REST प्रोटोकॉल की मदद से, Google Photos Library API को फिर से शुरू किया जा सकने वाला अपलोड अनुरोध करने का तरीका बताया गया है. इस प्रोटोकॉल से, फ़ाइल अपलोड करने की प्रोसेस फिर से शुरू की जा सकती है कम्यूनिकेशन में गड़बड़ी होने पर, डेटा का फ़्लो बिगड़ जाता है.
फिर से शुरू किए जा सकने वाले अपलोड के विकल्प का इस्तेमाल तब करें, जब:
- बड़ी फ़ाइलें अपलोड की जा रही हैं.
- नेटवर्क में रुकावट या किसी अन्य ट्रांसमिशन की गड़बड़ी होने की संभावना है उच्च (उदाहरण के लिए, अगर आप किसी मोबाइल ऐप्लिकेशन से फ़ाइल अपलोड कर रहे हैं).
नेटवर्क के बंद होने पर, फिर से शुरू किए जा सकने वाले अपलोड की सुविधा से, बैंडविड्थ का इस्तेमाल भी कम किया जा सकता है. ऐसा इसलिए, क्योंकि आपको बड़ी फ़ाइलों को फिर से शुरू करने की ज़रूरत नहीं पड़ती.
पहला चरण: अपलोड सेशन शुरू करना
इस पते पर एक पोस्ट अनुरोध भेजकर, फिर से शुरू किए जा सकने वाले अपलोड सेशन को शुरू करें
https://photoslibrary.googleapis.com/v1/uploads
. इस अनुरोध में मिले, फिर से शुरू किए जा सकने वाले अपलोड के यूआरएल का इस्तेमाल करके, फ़ाइल अपलोड करें.
पीओएसटी अनुरोध में ये हेडर शामिल होने चाहिए:
हेडर फ़ील्ड | |
---|---|
Content-Length |
अनुरोध का मुख्य हिस्सा खाली होने की वजह से, इसे 0 पर सेट करें. |
X-Goog-Upload-Command |
start पर सेट करें. |
X-Goog-Upload-Content-Type |
फ़ाइल के MIME टाइप पर सेट करें. उदाहरण के लिए,
image/jpeg . |
X-Goog-Upload-Protocol |
resumable पर सेट करें. |
X-Goog-Upload-Raw-Size |
फ़ाइल डेटा के कुल बाइट की संख्या ट्रांसफ़र किया गया. |
यहां पोस्ट अनुरोध का हेडर दिया गया है:
POST https://photoslibrary.googleapis.com/v1/uploads Authorization: Bearer oauth2-token Content-Length: 0 X-Goog-Upload-Command: start X-Goog-Upload-Content-Type: mime-type X-Goog-Upload-Protocol: resumable X-Goog-Upload-Raw-Size: bytes-of-file
दूसरा चरण: सेशन का यूआरएल सेव करना
सफल होने पर, पोस्ट अनुरोध एक 200 OK
एचटीटीपी स्टेटस कोड दिखाता है, जिसमें यह शामिल होता है
यहां दिया गया हेडर.
X-Goog-Upload-URL: url-to-make-uploads-to X-Goog-Upload-Chunk-Granularity: chunk-granularity-in-bytes
हेडर फ़ील्ड x-goog-upload-chunk-granularity
में बाइट अलाइनमेंट है
और क्लाइंट के भेजे गए सभी डेटा के हिस्से के लिए, साइज़ की जानकारी का लेवल. अगर अपलोड कई हिस्सों में किया जाता है, तो आखिरी अपलोड को छोड़कर, सभी अपलोड इस वैल्यू के मल्टीपल में होने चाहिए. इसका मतलब है कि फ़ाइल की अपलोड बाइट
इस वैल्यू से अलाइन होनी चाहिए. आखिरी चंक में, बचे हुए बाइट अपलोड किए जा सकते हैं.
हेडर फ़ील्ड X-Goog-Upload-URL
में एक यूनीक यूआरएल होता है. इसका इस्तेमाल इन कामों के लिए किया जाना चाहिए
बचे हुए सभी अनुरोधों के ज़रिए, अपलोड पूरा करें. फिर से शुरू किए जा सकने वाले सेशन का यह यूआरएल कॉपी करके सेव करें, ताकि आने वाले समय में अनुरोध करने के लिए इसका इस्तेमाल किया जा सके.
तीसरा चरण: फ़ाइल अपलोड करना
फिर से शुरू किए जाने वाले सेशन वाली फ़ाइल को अपलोड करने के दो तरीके हैं:
- एक ही अनुरोध में. आम तौर पर, यह तरीका सबसे अच्छा होता है, क्योंकि इसके लिए कम अनुरोधों की ज़रूरत होती है. इसलिए, इसकी परफ़ॉर्मेंस बेहतर होती है.
-
एक से ज़्यादा हिस्सों में. इस तरीके में, डेटा को कई हिस्सों में बांटकर, एक से ज़्यादा अनुरोधों में अपलोड किया जाता है. डेटा को
x-goog-upload-chunk-granularity
के मल्टीपल में बांटा जाता है. ज़रूरत पड़ने पर, एक साथ कई अनुरोध करने की सुविधा का इस्तेमाल करके किए गए अनुरोधों को फिर से भेजा जा सकता है.इस तरीके का इस्तेमाल तब करें, जब:
- आपको किसी भी अनुरोध में ट्रांसफ़र किए जाने वाले डेटा की मात्रा कम करनी होगी. आपको ऐसा तब करना पड़ सकता है, जब अलग-अलग अनुरोध नहीं कर सकते.
- आपको अपलोड दिखाने वाला इंडिकेटर दिखाना होगा, जिसमें यह जानकारी मौजूद हो प्रगति.
- आपको यह जानने की ज़रूरत है कि डेटा को खारिज करना कब सुरक्षित होता है.
एक बार किया गया अनुरोध
किसी एक अनुरोध में फ़ाइल अपलोड करने के लिए:
- फिर से शुरू किए जा सकने वाले सेशन के यूआरएल के लिए
POST
अनुरोध बनाएं. - अनुरोध के मुख्य हिस्से में फ़ाइल का डेटा जोड़ें.
ये एचटीटीपी हेडर जोड़ें:
Content-Length
: फ़ाइल में मौजूद बाइट की संख्या पर सेट करें.X-Goog-Upload-Command
:upload, finalize
पर सेट करें.
अनुरोध भेजें.
अगर अपलोड करने के अनुरोध में रुकावट आती है या आपको 5xx
मिलता है
प्रतिक्रिया के रूप में, तो किसी व्यक्तिगत संपर्क के लिए
अपलोड की प्रोसेस में रुकावट आई.
अनुरोध पूरा होने पर, आपको 200 OK
एचटीटीपी स्टेटस मिलेगा
रिस्पॉन्स के मुख्य हिस्से में कोड और अपलोड टोकन शामिल करें.
बनाएं
मीडिया आइटम.
एक से ज़्यादा चंक
फ़ाइल को कई हिस्सों में अपलोड करने के लिए:
- फिर से शुरू किए जा सकने वाले सेशन यूआरएल के लिए,
POST
अनुरोध बनाएं. -
अनुरोध के मुख्य हिस्से में डेटा समूह का डेटा जोड़ें.
अपलोड पूरा करने वाले आखिरी चंक को छोड़कर, चंक के लिए तय किए गए साइज़ के हिसाब से, अन्य चंक बनाएं. बनाए रखें डेटा को जितना हो सके उतना बड़ा करें, ताकि अपलोड बेहतर तरीके से हो सके.
-
ये एचटीटीपी हेडर जोड़ें:
Content-Length
: टेक्स्ट बॉक्स में बाइट की संख्या डेटा का हिस्सा.X-Goog-Upload-Command
:upload
पर सेट करें. आखिरी चंक के लिए,upload, finalize
पर सेट करें.X-Goog-Upload-Offset
: उस ऑफ़सेट पर सेट करें जहां बाइट लिखे जाने चाहिए. ध्यान दें कि बाइट अपलोड करना ज़रूरी है क्रम से. पहला ऑफ़सेट0
है.
- अनुरोध भेजें.
अगर अपलोड के अनुरोध में रुकावट आती है या आपको
5xx
जवाब मिलता है, तो अपलोड की प्रोसेस को फिर से शुरू करने का तरीका अपनाएं. - फ़ाइल में बचे हुए हर हिस्से के लिए यह तरीका दोहराएं.
अनुरोध पूरा होने पर, आपको जवाब के मुख्य हिस्से में 200 OK
एचटीटीपी स्टेटस कोड और अपलोड टोकन मिलता है.
बनाएं
मीडिया आइटम.
उदाहरण
एक अनुरोध
नीचे दिए गए उदाहरण में, आपके Google Ads खाते की एक अनुरोध में 3,039,417-बाइट वाली JPEG फ़ाइल.
POST https://photoslibrary.googleapis.com/v1/uploads HTTP/1.1 Content-Length: 0 X-Goog-Upload-Command: start X-Goog-Upload-Content-Type: image/jpeg X-Goog-Upload-Protocol: resumable X-Goog-Upload-Raw-Size: 3039417 [no body]
रिस्पॉन्स में अपलोड यूआरएल और डेटा का अनुमानित साइज़ शामिल होता है:
HTTP/1.1 200 OK X-Goog-Upload-URL: https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable X-Goog-Upload-Chunk-Granularity: 262144
अपलोड करने का आखिरी अनुरोध:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 3039417 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 0 [BYTES 0-4199999]
एक से ज़्यादा चंक
नीचे दिए गए उदाहरण में, आपके Google Ads खाते की
फिर से शुरू किए जा सकने वाले सेशन का इस्तेमाल करके,कई हिस्सों में 3,039, 417-बाइट वाली JPEG फ़ाइल
यूआरएल और पिछले चरण में मिले डेटा का स्वीकार किया गया डेटा समूह.
इस उदाहरण में 2,62,144 बाइट के डेटा का डेटा है, जो
हेडर फ़ील्ड, x-goog-upload-chunk-granularity
, जब
अपलोड सेशन शुरू किया गया. ध्यान दें कि हर अपलोड में ऐसे बाइट होते हैं जो
2,62,144 के मल्टीपल होते हैं.
अपलोड सेशन शुरू करें, ताकि अपलोड यूआरएल और चंक साइज़ पाया जा सके. इसके लिए, पिछले चरण में बताए गए तरीके का इस्तेमाल करें:
POST https://photoslibrary.googleapis.com/v1/uploads HTTP/1.1 Content-Length: 0 X-Goog-Upload-Command: start X-Goog-Upload-Content-Type: image/jpeg X-Goog-Upload-Protocol: resumable X-Goog-Upload-Raw-Size: 3039417 [no body]
रिस्पॉन्स में, अपलोड यूआरएल और डेटा का अनुमानित साइज़ शामिल होता है:
HTTP/1.1 200 OK X-Goog-Upload-URL: https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable X-Goog-Upload-Chunk-Granularity: 262144
पहला चंक:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 1048576 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 0 [BYTES 0-1048575]
दूसरा समूह:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 1048576 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 1048576 [BYTES 1048576-2097151]
आखिरी हिस्सा:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 942265 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 2097152 [BYTES 2097152-4200000]
किसी रोके गए अपलोड को फिर से शुरू करना
अगर अपलोड करने के अनुरोध में रुकावट आती है या आपको बिना 200
एचटीटीपी स्टेटस मिलता है
कोड डालकर, सर्वर से क्वेरी करके पता लगाएं कि कितना डेटा अपलोड हुआ.
यहां फिर से शुरू किए जा सकने वाले सेशन के यूआरएल के लिए POST
अनुरोध दिया गया है. X-Goog-Upload-Command
को query
पर सेट किया जाना चाहिए.
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 0 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
नहीं है, तो इसका मतलब है कि अपलोड पहले ही बंद हो चुका है.