এই পৃষ্ঠায় স্ট্রিট ভিউ পাবলিশ এপিআই-তে কীভাবে একটি পুনরায় শুরুযোগ্য আপলোড অনুরোধ করতে হয় তা বর্ণনা করা হয়েছে। এই প্রোটোকলটি আপনাকে যোগাযোগের ব্যর্থতার কারণে ডেটা প্রবাহ বাধাগ্রস্ত হওয়ার পর একটি আপলোড অপারেশন পুনরায় শুরু করার সুযোগ দেয়। নিম্নলিখিত ক্ষেত্রে এই বিকল্পটি ব্যবহার করুন:
- আপনি বড় ফাইল আপলোড করছেন।
- নেটওয়ার্ক বিঘ্নিত হওয়া বা অন্য কোনোভাবে তথ্য প্রেরণে ব্যর্থতার সম্ভাবনা বেশি থাকে (উদাহরণস্বরূপ, যদি আপনি কোনো মোবাইল অ্যাপ থেকে ফাইল আপলোড করেন)।
নেটওয়ার্ক ব্যর্থতার ক্ষেত্রে রিস্যুমেবল আপলোড আপনার ব্যান্ডউইথের ব্যবহারও কমাতে পারে, কারণ এক্ষেত্রে বড় ফাইল আপলোড আপনাকে একেবারে শুরু থেকে আবার শুরু করতে হয় না।
যদি আপনি একটি নির্ভরযোগ্য নেটওয়ার্ক সংযোগের মাধ্যমে ছোট ফাইল পাঠান, তাহলে এর পরিবর্তে একটি সাধারণ আপলোড ব্যবহার করতে পারেন।
পুনরায় শুরুযোগ্য আপলোড সেশন শুরু করা হচ্ছে
একবার আপনি একটি uploadUrl পেয়ে গেলে, আপনি একটি পুনরায় শুরুযোগ্য আপলোড সেশন শুরু করতে পারেন:
-
uploadUrlএ একটিPOSTঅনুরোধ তৈরি করুন। নিম্নলিখিত HTTP হেডারগুলি যোগ করুন:
-
X-Goog-Upload-Protocol:resumableহিসেবে সেট করা হয়েছে। -
X-Goog-Upload-Header-Content-Length: ফাইল ডেটার মোট বাইট সংখ্যায় সেট করুন, যা পরবর্তী অনুরোধগুলিতে স্থানান্তরিত হবে। -
X-Goog-Upload-Header-Content-Type: ফাইল ডেটার MIME টাইপে সেট করুন। -
X-Goog-Upload-Command:startজন্য সেট করা হয়েছে।
-
অনুরোধটি পাঠান।
উদাহরণ: পুনরায় শুরুযোগ্য আপলোড সেশন শুরু করা
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি নতুন ফাইল আপলোড করার জন্য একটি রিস্যুমেবল সেশন শুরু করতে হয়। এক্ষেত্রে, ফাইলটি একটি ছবি এবং ফাইলটির মোট বাইটের পরিমাণ ৪২০০০০০। লক্ষ্য করুন যে, রিকোয়েস্টের বডি খালি; তাই, Content-Length হেডারটির মান ০ সেট করা হয়েছে।
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
রিস্যুমেবল সেশন ইউআরএল সংরক্ষণ করার অংশে বর্ণনা করা হয়েছে যে, রিস্যুমেবল আপলোড সেশন শুরু করার অনুরোধের প্রতিক্রিয়া কীভাবে পরিচালনা করতে হবে।
পুনরায় শুরুযোগ্য সেশন URL সংরক্ষণ করা হচ্ছে
পুনরায় শুরুযোগ্য আপলোড সেশন চালু করার জন্য পাঠানো অনুরোধের জবাবে সার্ভার নিম্নলিখিত হেডার সহ একটি 200 OK HTTP স্ট্যাটাস কোড পাঠাবে:
-
X-Goog-Upload-URL: একটি অনন্য URL যা বাকি সমস্ত অনুরোধের মাধ্যমে আপলোডটি সম্পূর্ণ করতে অবশ্যই ব্যবহার করতে হবে।
পুনরায় শুরুযোগ্য সেশন ইউআরএলটি কপি করে সংরক্ষণ করুন, যাতে আপনি পরবর্তী অনুরোধগুলির জন্য এটি ব্যবহার করতে পারেন।
উদাহরণ: পুনরায় শুরুযোগ্য সেশন 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অনুরোধ তৈরি করুন। - ফাইলটির ডেটা রিকোয়েস্ট বডিতে যোগ করুন।
নিম্নলিখিত HTTP হেডারগুলি যোগ করুন:
-
Content-Length: ফাইলের বাইট সংখ্যা অনুযায়ী সেট করুন। -
X-Goog-Upload-Command:upload, finalizeজন্য সেট করুন।
-
অনুরোধটি পাঠান।
যদি আপলোড অনুরোধটি বাধাগ্রস্ত হয় অথবা আপনি একটি 5xx প্রতিক্রিয়া পান, তাহলে "বাধাগ্রস্ত আপলোড পুনরায় শুরু করা" অংশে বর্ণিত পদ্ধতি অনুসরণ করুন।
একাধিক খণ্ড
ফাইলটি একাধিক খণ্ডে আপলোড করতে:
- পুনরায় শুরুযোগ্য সেশন ইউআরএল-এ একটি
POSTঅনুরোধ তৈরি করুন। - চাঙ্কের ডেটা রিকোয়েস্ট বডিতে যোগ করুন। আপলোড সম্পন্নকারী শেষ চাঙ্কটি ছাড়া, বাকি চাঙ্কগুলো ২ MiB (মেবিবাইট)-এর গুণিতকে তৈরি করুন। চাঙ্কের আকার যথাসম্ভব বড় রাখুন, যাতে আপলোডটি কার্যকর হয়।
নিম্নলিখিত HTTP হেডারগুলি যোগ করুন:
-
Content-Length: চাঙ্কের বাইট সংখ্যা অনুযায়ী সেট করুন। -
X-Goog-Upload-Command:uploadজন্য সেট করুন। শেষ চাঙ্কের জন্য,upload, finalizeজন্য সেট করুন। -
X-Goog-Upload-Offset: যে অফসেটে বাইটগুলো লেখা হবে, তা এখানে সেট করুন। মনে রাখবেন, বাইটগুলো অবশ্যই ক্রমানুসারে আপলোড করতে হবে।
-
অনুরোধটি পাঠান। যদি আপলোড অনুরোধটি বাধাগ্রস্ত হয় বা আপনি একটি
5xxপ্রতিক্রিয়া পান, তাহলে "বাধাগ্রস্ত আপলোড পুনরায় শুরু করা" অংশে বর্ণিত পদ্ধতি অনুসরণ করুন।ফাইলের বাকি প্রতিটি খণ্ডের জন্য ১ থেকে ৪ নম্বর ধাপগুলো পুনরাবৃত্তি করুন।
উদাহরণ: ফাইল আপলোড করা
একক অনুরোধ
নিম্নলিখিত উদাহরণটি পূর্ববর্তী ধাপে প্রাপ্ত রিস্যুমেবল সেশন ইউআরএল ব্যবহার করে, একটি একক অনুরোধে সম্পূর্ণ ৪২,০০,০০০-বাইটের একটি জেপিইজি ফাইল আপলোড করার একটি রিস্যুমেবল অনুরোধ দেখাচ্ছে:
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 HTTP স্ট্যাটাস কোড পাবেন।
একাধিক খণ্ড
নিম্নলিখিত উদাহরণটি পূর্ববর্তী ধাপে প্রাপ্ত রিস্যুমেবল সেশন ইউআরএল এবং সাইজ গ্র্যানুলারিটি ব্যবহার করে, একটি ৪,২০০,০০০-বাইটের JPEG ফাইলকে একাধিক চাঙ্কে আপলোড করার জন্য একটি রিস্যুমেবল রিকোয়েস্ট দেখায়। এই উদাহরণটিতে ২০৯৭০০০ বাইটের একটি চাঙ্ক সাইজ ব্যবহার করা হয়েছে, যা ২ 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 ছাড়া অন্য কোনো HTTP স্ট্যাটাস কোড পান, তাহলে আপলোডের কতটুকু সফল হয়েছে তা জানতে সার্ভারে জিজ্ঞাসা করুন:
- পুনরায় শুরুযোগ্য সেশন ইউআরএল-এ একটি
POSTঅনুরোধ তৈরি করুন। -
X-Goog-Upload-Commandqueryতে সেট করুন। - অনুরোধটি পাঠান।
সার্ভারটি একটি 200 OK HTTP স্ট্যাটাস কোড এবং আপলোডের বর্তমান আকার দিয়ে সাড়া দেবে:
HTTP/1.1 200 OK
X-Goog-Upload-Status: active
X-Goog-Upload-Size-Received: 100
এরপর আপনি এই অফসেট থেকে আপলোড পুনরায় শুরু করতে পারেন। আপনাকে অবশ্যই সার্ভার কর্তৃক প্রদত্ত অফসেট থেকে পুনরায় শুরু করতে হবে, যদি না আপনি একটি সম্মিলিত আপলোড এবং চূড়ান্তকরণ কমান্ড পাঠান, সেক্ষেত্রে আপনি অফসেট ০ থেকেও পুনরায় শুরু করতে পারেন।
আপনার কোয়েরি কমান্ডের HTTP রেসপন্সে যদি X-Goog-Upload-Status হেডারটি উপস্থিত থাকে এবং এর মান active না হয়, তাহলে আপলোডটি ইতিমধ্যেই বন্ধ করে দেওয়া হয়েছে।