এই পৃষ্ঠাটি বর্ণনা করে যে কিভাবে REST প্রোটোকলের মাধ্যমে Google Photos Library API-তে পুনরায় শুরু করার যোগ্য আপলোডের অনুরোধ করা যায়। এই প্রোটোকল আপনাকে একটি আপলোড অপারেশন পুনরায় শুরু করার অনুমতি দেয় যখন যোগাযোগের ব্যর্থতা ডেটা প্রবাহে বাধা দেয়।
আপনি যদি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে একজন ডেভেলপার হন, তবে মনে রাখবেন কিছু ক্লায়েন্ট লাইব্রেরি পুনরায় শুরু করা আপলোডের জন্য স্থানীয় সমর্থন প্রদান করে।
পুনরায় শুরুযোগ্য আপলোড বিকল্প ব্যবহার করুন যদি:
- আপনি বড় ফাইল আপলোড করছেন.
- নেটওয়ার্ক বাধা বা অন্য কিছু ট্রান্সমিশন ব্যর্থতার সম্ভাবনা বেশি (উদাহরণস্বরূপ, যদি আপনি একটি মোবাইল অ্যাপ থেকে একটি ফাইল আপলোড করছেন)।
নেটওয়ার্ক ব্যর্থতার সময় পুনরায় শুরু করা আপলোডগুলি আপনার ব্যান্ডউইথের ব্যবহার কমাতে পারে, কারণ আপনাকে শুরু থেকে বড় ফাইল আপলোডগুলি পুনরায় চালু করতে হবে না।
ধাপ 1: একটি আপলোড সেশন শুরু করা
https://photoslibrary.googleapis.com/v1/uploads
এ একটি POST অনুরোধ পাঠিয়ে একটি পুনঃসূচনাযোগ্য আপলোড সেশন শুরু করুন। এই অনুরোধে ফিরে আসা পুনরায় শুরুযোগ্য আপলোড URL ব্যবহার করে, ফাইল আপলোড করুন।
POST অনুরোধে নিম্নলিখিত শিরোনামগুলি অন্তর্ভুক্ত করা আবশ্যক:
হেডার ক্ষেত্র | |
---|---|
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 | ফাইল ডেটা স্থানান্তর করার জন্য মোট বাইট সংখ্যা সেট করুন। |
এখানে একটি POST অনুরোধ শিরোনাম আছে:
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
ধাপ 2: সেশন URL সংরক্ষণ করা হচ্ছে
সফল হলে, POST অনুরোধটি নিম্নলিখিত শিরোনাম সহ একটি 200 OK
HTTP স্ট্যাটাস কোড প্রদান করে।
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
একটি অনন্য URL রয়েছে যা বাকি সমস্ত অনুরোধের মাধ্যমে আপলোড সম্পূর্ণ করতে ব্যবহার করা আবশ্যক৷ এই পুনঃসূচনাযোগ্য সেশন URLটি অনুলিপি করুন এবং সংরক্ষণ করুন, যাতে আপনি পরবর্তী অনুরোধগুলির জন্য এটি ব্যবহার করতে পারেন।
ধাপ 3: ফাইল আপলোড করা হচ্ছে
একটি পুনরায় শুরু করা সেশন সহ একটি ফাইল আপলোড করার দুটি উপায় রয়েছে:
- একক অনুরোধে। এই পদ্ধতিটি সাধারণত সর্বোত্তম, কারণ এটির জন্য কম অনুরোধের প্রয়োজন হয় এবং এইভাবে আরও ভাল কর্মক্ষমতা রয়েছে।
একাধিক খণ্ডে। এই পদ্ধতিতে, ডেটা খণ্ড করে একাধিক অনুরোধে আপলোড করা হয়। ডেটা
x-goog-upload-chunk-granularity
এর গুণে খণ্ডিত হয়। প্রয়োজনে, খণ্ডিত অনুরোধগুলি পুনরায় চেষ্টা করা যেতে পারে।এই পদ্ধতিটি ব্যবহার করুন যদি:
- আপনাকে যেকোনো একক অনুরোধে স্থানান্তরিত ডেটার পরিমাণ কমাতে হবে। পৃথক অনুরোধের জন্য একটি নির্দিষ্ট সময়সীমা থাকলে আপনাকে এটি করতে হতে পারে।
- আপনাকে আপলোডের অগ্রগতি দেখানো একটি কাস্টমাইজড সূচক প্রদান করতে হবে।
- আপনার জানতে হবে কখন ডেটা বাতিল করা নিরাপদ।
একক অনুরোধ
একটি একক অনুরোধে ফাইল আপলোড করতে:
- পুনরায় শুরু করা সেশন URL-এ একটি
POST
অনুরোধ তৈরি করুন৷ - অনুরোধের বডিতে ফাইলের ডেটা যোগ করুন।
নিম্নলিখিত HTTP শিরোনাম যোগ করুন:
-
Content-Length
: ফাইলে বাইটের সংখ্যা নির্ধারণ করুন। -
X-Goog-Upload-Command
:upload, finalize
।
-
অনুরোধ পাঠান।
যদি আপলোডের অনুরোধ বাধাপ্রাপ্ত হয় বা আপনি একটি 5xx
প্রতিক্রিয়া পান, তাহলে একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করার পদ্ধতি অনুসরণ করুন।
অনুরোধটি সফল হলে, আপনি একটি 200 OK
HTTP স্ট্যাটাস কোড এবং প্রতিক্রিয়া বডিতে একটি আপলোড টোকেন পাবেন। এই আপলোড টোকেন ব্যবহার করে মিডিয়া আইটেম তৈরি করুন ।
একাধিক খণ্ড
ফাইলটি একাধিক খণ্ডে আপলোড করতে:
- পুনরায় শুরু করা সেশন URL-এ একটি
POST
অনুরোধ তৈরি করুন৷ অনুরোধের বডিতে খণ্ডের ডেটা যোগ করুন।
আপলোড সম্পূর্ণ করা চূড়ান্ত খণ্ডটি ব্যতীত, খণ্ডগুলির স্বীকৃত আকারের গুণিতকগুলিতে অন্যান্য খণ্ডগুলি তৈরি করুন। খণ্ডের আকার যতটা সম্ভব বড় রাখুন যাতে আপলোড কার্যকর হয়।
নিম্নলিখিত HTTP শিরোনাম যোগ করুন:
-
Content-Length
: খণ্ডে বাইটের সংখ্যা নির্ধারণ করুন। -
X-Goog-Upload-Command
:upload
করতে সেট করুন। শেষ খণ্ডের জন্য,upload, finalize
। -
X-Goog-Upload-Offset
: অফসেটে সেট করুন যেখানে বাইট লেখা উচিত। উল্লেখ্য যে বাইটগুলি অবশ্যই সিরিয়ালি আপলোড করতে হবে। প্রথম অফসেট হল0
।
-
- অনুরোধ পাঠান।
যদি আপলোডের অনুরোধ বাধাপ্রাপ্ত হয় বা আপনি একটি
5xx
প্রতিক্রিয়া পান, তাহলে একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করার পদ্ধতি অনুসরণ করুন। - ফাইলের প্রতিটি অবশিষ্ট অংশের জন্য উপরের পদক্ষেপগুলি পুনরাবৃত্তি করুন।
অনুরোধটি সফল হলে, আপনি একটি 200 OK
HTTP স্ট্যাটাস কোড এবং প্রতিক্রিয়া বডিতে একটি আপলোড টোকেন পাবেন। এই আপলোড টোকেন ব্যবহার করে মিডিয়া আইটেম তৈরি করুন ।
উদাহরণ
একক অনুরোধ
নিম্নলিখিত উদাহরণটি একটি অনুরোধে একটি 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]
প্রতিক্রিয়াটিতে আপলোড URL এবং প্রত্যাশিত খণ্ড আকার রয়েছে:
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]
একাধিক খণ্ড
নিম্নলিখিত উদাহরণটি পুনরায় শুরু করা সেশন URL এবং পূর্ববর্তী ধাপে প্রাপ্ত স্বীকৃত খণ্ড আকারের গ্রানুলারিটি ব্যবহার করে একাধিক খণ্ডে একটি 3,039,417-বাইট JPEG ফাইল আপলোড করার একটি পুনরায় শুরুযোগ্য অনুরোধ দেখায়। এই উদাহরণটি 262,144 বাইটের একটি খণ্ড আকার ব্যবহার করে যা শিরোনাম ক্ষেত্রে, x-goog-upload-chunk-granularity
, যখন আপলোড সেশন শুরু করা হয়েছিল তখন ফেরত দেওয়া হয়েছিল৷ মনে রাখবেন যে প্রতিটি আপলোডে বাইট রয়েছে যা 262,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]
প্রতিক্রিয়াটিতে আপলোড URL এবং প্রত্যাশিত খণ্ড আকার রয়েছে:
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
HTTP স্ট্যাটাস কোড পান, তাহলে কতটা আপলোড সফল হয়েছে তা জানতে সার্ভারকে জিজ্ঞাসা করুন।
এখানে পুনঃসূচনাযোগ্য সেশন URL-এ একটি 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 স্ট্যাটাস কোড এবং আপলোডের বর্তমান আকার অন্তর্ভুক্ত করে।
HTTP/1.1 200 OK X-Goog-Upload-Status: active X-Goog-Upload-Size-Received: 100
তারপরে আপনি এই অফসেটে আপলোড পুনরায় শুরু করতে পারেন। আপনাকে অবশ্যই সার্ভার দ্বারা প্রদত্ত অফসেটে পুনরায় শুরু করতে হবে যদি না আপনি একটি সম্মিলিত আপলোড এবং চূড়ান্ত কমান্ড না পাঠান, এই ক্ষেত্রে আপনি অফসেট 0 এ পুনরায় শুরু করতে পারেন।
যদি আপনার ক্যোয়ারী কমান্ডের HTTP প্রতিক্রিয়াতে X-Goog-Upload-Status
শিরোনামটি উপস্থিত থাকে এবং মানটি active
না হয় তবে এটি ইঙ্গিত দেয় যে আপলোড ইতিমধ্যেই বন্ধ হয়ে গেছে৷