আপনি Google API-এর জন্য পুনরায় শুরু করা আপলোড প্রোটোকল ব্যবহার করে আরও নির্ভরযোগ্যভাবে ভিডিও আপলোড করতে পারেন। এই প্রোটোকল আপনাকে নেটওয়ার্ক ব্যাঘাত বা অন্য ট্রান্সমিশন ব্যর্থতার পরে একটি আপলোড অপারেশন পুনরায় শুরু করতে দেয়, নেটওয়ার্ক ব্যর্থতার ক্ষেত্রে সময় এবং ব্যান্ডউইথ সাশ্রয় করে।
পুনঃসূচনাযোগ্য আপলোডগুলি ব্যবহার করা নিম্নলিখিত যেকোন ক্ষেত্রে বিশেষভাবে কার্যকর:
- আপনি বড় ফাইল স্থানান্তর করছেন.
- নেটওয়ার্ক বিঘ্নিত হওয়ার সম্ভাবনা বেশি।
- আপলোডগুলি একটি কম ব্যান্ডউইথ বা অস্থির ইন্টারনেট সংযোগ সহ একটি ডিভাইস থেকে উদ্ভূত হয়, যেমন একটি মোবাইল ডিভাইস৷
এই নির্দেশিকাটি HTTP অনুরোধগুলির ক্রম ব্যাখ্যা করে যা একটি অ্যাপ্লিকেশন পুনরায় শুরুযোগ্য আপলোডিং প্রক্রিয়া ব্যবহার করে ভিডিও আপলোড করতে করে। এই নির্দেশিকাটি মূলত ডেভেলপারদের জন্য যারা Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারে না, যার মধ্যে কিছু আবার শুরু করা যায় এমন আপলোডের জন্য স্থানীয় সমর্থন প্রদান করে। প্রকৃতপক্ষে, ইউটিউব ডেটা এপিআই - একটি ভিডিও নির্দেশিকা আপলোড করা ব্যাখ্যা করে কিভাবে একটি পুনঃসূচনাযোগ্য আপলোডিং প্রক্রিয়া ব্যবহার করে একটি ভিডিও আপলোড করতে পাইথনের জন্য Google APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে হয়।
দ্রষ্টব্য: আপনি HTTPS লগিং সক্ষম সহ Google API ক্লায়েন্ট লাইব্রেরিগুলির একটি ব্যবহার করে পুনরায় শুরুযোগ্য আপলোড বা অন্য কোনো API অপারেশনের জন্য করা অনুরোধের সিরিজ দেখতে পারেন। উদাহরণস্বরূপ, পাইথনের জন্য HTTP ট্রেস সক্ষম করতে, httplib2
লাইব্রেরি ব্যবহার করুন:
httplib2.debuglevel = 4
ধাপ 1 - একটি পুনরায় শুরু করা সেশন শুরু করুন
একটি পুনঃসূচনাযোগ্য ভিডিও আপলোড শুরু করতে, নিম্নলিখিত URL এ একটি POST অনুরোধ পাঠান৷ ইউআরএল-এ, আপনার অনুরোধের জন্য উপযুক্ত মানের part
প্যারামিটার মান সেট করুন। মনে রাখবেন যে প্যারামিটার মান সেই অংশগুলিকে চিহ্নিত করে যেগুলির বৈশিষ্ট্যগুলি আপনি সেট করছেন এবং এটি সেই অংশগুলিকেও চিহ্নিত করে যা আপনি API প্রতিক্রিয়া অন্তর্ভুক্ত করতে চান৷ অনুরোধ URL-এ প্যারামিটার মান অবশ্যই URL-এনকোড করা হবে।
https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=PARTS
অনুরোধের মূল অংশটি একটি video
সংস্থানে সেট করুন৷ এছাড়াও নিম্নলিখিত HTTP অনুরোধ শিরোনাম সেট করুন:
-
Authorization
- অনুরোধের জন্য অনুমোদনের টোকেন। -
Content-Length
- অনুরোধের মূল অংশে প্রদত্ত বাইটের সংখ্যা। মনে রাখবেন যে আপনি যদি খণ্ডিত স্থানান্তর এনকোডিং ব্যবহার করেন তবে আপনাকে এই শিরোনামটি প্রদান করার প্রয়োজন নেই। -
Content-Type
-application/json; charset=UTF-8
। -
X-Upload-Content-Length
- পরবর্তী অনুরোধে আপলোড করা হবে এমন বাইটের সংখ্যা। আপনি যে ফাইলটি আপলোড করছেন তার আকারে এই মানটি সেট করুন। -
x-upload-content-type
– আপনি যে ফাইলটি আপলোড করছেন তার MIME প্রকার। আপনি যেকোন ভিডিও MIME টাইপ (video/*
) অথবা MIME ধরনেরapplication/octet-stream
দিয়ে ফাইল আপলোড করতে পারেন।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি ভিডিও আপলোড করার জন্য একটি পুনরায় শুরু করার যোগ্য সেশন শুরু করতে হয়। অনুরোধটি video
রিসোর্সের snippet
এবং status
অংশগুলিতে বৈশিষ্ট্যগুলি সেট করে (এবং পুনরুদ্ধার করবে) এবং এটি সম্পদের contentdetails
অংশে বৈশিষ্ট্যগুলিও পুনরুদ্ধার করবে৷
post /upload/youtube/v3/videos?uploadType=resumable&part=parts http/1.1 host: www.googleapis.com authorization: bearer auth_token content-length: content_length content-type: application/json; charset=utf-8 x-upload-content-length: x_upload_content_length X-Upload-Content-Type: X_UPLOAD_CONTENT_TYPE video resource
নিম্নলিখিত উদাহরণটি একটি POST অনুরোধ দেখায় যাতে প্রমাণীকরণ টোকেন বাদ দিয়ে এই সমস্ত মান রয়েছে। উদাহরণে categoryId
মান একটি ভিডিও বিভাগের সাথে মিলে যায়। সমর্থিত বিভাগের তালিকা API-এর videoCategories.list
পদ্ধতি ব্যবহার করে পুনরুদ্ধার করা যেতে পারে।
POST /upload/youtube/v3/videos?uploadType=resumable&part=snippet,status,contentDetails HTTP/1.1 Host: www.googleapis.com Authorization: Bearer AUTH_TOKEN Content-Length: 278 Content-Type: application/json; charset=UTF-8 X-Upload-Content-Length: 3000000 X-Upload-Content-Type: video/* { "snippet": { "title": "My video title", "description": "This is a description of my video", "tags": ["cool", "video", "more keywords"], "categoryId": 22 }, "status": { "privacyStatus": "public", "embeddable": True, "license": "youtube" } }
ধাপ 2 - পুনরায় শুরু করা সেশন URI সংরক্ষণ করুন
আপনার অনুরোধ সফল হলে, API সার্ভার একটি 200
( OK
) HTTP স্ট্যাটাস কোড দিয়ে সাড়া দেবে, এবং প্রতিক্রিয়াটিতে একটি Location
HTTP শিরোনাম অন্তর্ভুক্ত থাকবে যা পুনরায় শুরু করা সেশনের জন্য URI নির্দিষ্ট করে। এই URI যা আপনি আপনার ভিডিও ফাইল আপলোড করতে ব্যবহার করবেন।
নীচের উদাহরণটি ধাপ 1 এ অনুরোধের একটি নমুনা API প্রতিক্রিয়া দেখায়:
HTTP/1.1 200 OK Location: https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&upload_id=xa298sd_f&part=snippet,status,contentDetails Content-Length: 0
ধাপ 3 - ভিডিও ফাইল আপলোড করুন
API প্রতিক্রিয়া থেকে সেশন URI বের করার পরে, আপনাকে সেই অবস্থানে প্রকৃত ভিডিও ফাইল সামগ্রী আপলোড করতে হবে। অনুরোধের মূল অংশ হল আপনি যে ভিডিওটি আপলোড করছেন তার জন্য বাইনারি ফাইল সামগ্রী। নীচের উদাহরণ অনুরোধের বিন্যাস দেখায়.
PUT UPLOAD_URL HTTP/1.1 Authorization: Bearer AUTH_TOKEN Content-Length: CONTENT_LENGTH Content-Type: CONTENT_TYPE BINARY_FILE_DATA
অনুরোধ নিম্নলিখিত HTTP অনুরোধ শিরোনাম সেট করে:
-
Authorization
- অনুরোধের জন্য অনুমোদনের টোকেন। -
Content-Length
- আপনি যে ফাইলটি আপলোড করছেন তার আকার। এই মানটি ধাপ 1-এX-Upload-Content-Length
HTTP অনুরোধ শিরোনামের মানের সমান হওয়া উচিত। -
Content-Type
– আপনি যে ফাইলটি আপলোড করছেন তার MIME প্রকার। এই মানটি ধাপ 1-এX-Upload-Content-Type
HTTP অনুরোধ শিরোনামের মানের সমান হওয়া উচিত।
ধাপ 4 - আপলোড প্রক্রিয়া সম্পূর্ণ করুন
আপনার অনুরোধ নিম্নলিখিত পরিস্থিতিগুলির মধ্যে একটির দিকে নিয়ে যাবে:
আপনার আপলোড সফল হয়েছে.
API সার্ভার একটি HTTP
201
(Created
) প্রতিক্রিয়া কোড দিয়ে প্রতিক্রিয়া জানায়৷ প্রতিক্রিয়ার মূল অংশটি আপনার তৈরি করাvideo
সংস্থান।আপনার আপলোড সফল হয়নি, কিন্তু পুনরায় শুরু করা যেতে পারে.
আপনি নিম্নলিখিত ক্ষেত্রে একটি আপলোড পুনরায় শুরু করতে সক্ষম হওয়া উচিত:
আপনার অনুরোধ বাধাগ্রস্ত হয়েছে কারণ আপনার অ্যাপ্লিকেশন এবং API সার্ভারের মধ্যে সংযোগ হারিয়ে গেছে৷ এই ক্ষেত্রে, আপনি একটি API প্রতিক্রিয়া পাবেন না।
API প্রতিক্রিয়া নিম্নলিখিত
5xx
প্রতিক্রিয়া কোডগুলির যেকোনো একটি নির্দিষ্ট করে। এই প্রতিক্রিয়া কোডগুলির যেকোনো একটি পাওয়ার পরে আপলোডগুলি পুনরায় শুরু করার সময় আপনার কোডটি একটি সূচকীয় ব্যাকঅফ কৌশল ব্যবহার করা উচিত।-
500
-Internal Server Error
-
502
-Bad Gateway
-
503
-Service Unavailable
-
504
-Gateway Timeout
-
একটি আপলোড পুনরায় শুরু করতে, আপলোডের স্থিতি পরীক্ষা করার জন্য এবং নীচে একটি আপলোড পুনরায় শুরু করার নির্দেশাবলী অনুসরণ করুন৷ মনে রাখবেন যে প্রতিটি পুনঃসূচনাযোগ্য সেশন URI-এর একটি সীমাবদ্ধ জীবনকাল থাকে এবং অবশেষে মেয়াদ শেষ হয়। এই কারণে, আমরা সুপারিশ করি যে আপনি সেশন URI পাওয়ার সাথে সাথে একটি পুনঃসূচনাযোগ্য আপলোড শুরু করুন এবং বিঘ্ন ঘটার পরেই একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করুন৷
আপনার আপলোড স্থায়ীভাবে ব্যর্থ হয়েছে.
একটি ব্যর্থ আপলোডের জন্য, প্রতিক্রিয়াটিতে একটি ত্রুটি প্রতিক্রিয়া রয়েছে যা ব্যর্থতার কারণ ব্যাখ্যা করতে সহায়তা করে। স্থায়ীভাবে ব্যর্থ হওয়া আপলোডের জন্য, API প্রতিক্রিয়াতে উপরে তালিকাভুক্তগুলি ছাড়া একটি
4xx
প্রতিক্রিয়া কোড বা একটি5xx
প্রতিক্রিয়া কোড থাকবে।আপনি যদি মেয়াদ উত্তীর্ণ সেশন URI সহ একটি অনুরোধ পাঠান, সার্ভার একটি
404
HTTP প্রতিক্রিয়া কোড প্রদান করে (Not Found
)। এই ক্ষেত্রে, আপনাকে একটি নতুন রিজুমেবল আপলোড শুরু করতে হবে, একটি নতুন সেশন URI পেতে হবে এবং নতুন URI ব্যবহার করে শুরু থেকে আপলোড শুরু করতে হবে।
ধাপ 4.1: একটি আপলোডের স্থিতি পরীক্ষা করুন
বিঘ্নিত পুনঃসূচনাযোগ্য আপলোডের স্থিতি পরীক্ষা করতে, আপলোড URL-এ একটি খালি PUT অনুরোধ পাঠান যা আপনি ধাপ 2 এ পুনরুদ্ধার করেছেন এবং ধাপ 3 এও ব্যবহার করেছেন। আপনার অনুরোধে, Content-Range
শিরোনাম মানটি bytes */ CONTENT_LENGTH
এ সেট করুন, যেখানে CONTENT_LENGTH হল আপনি যে ফাইলটি আপলোড করছেন তার আকার৷
PUT UPLOAD_URL HTTP/1.1 Authorization: Bearer AUTH_TOKEN Content-Length: 0 Content-Range: bytes */CONTENT_LENGTH
ধাপ 4.2: API প্রতিক্রিয়া প্রক্রিয়া করুন
আপলোড ইতিমধ্যে সম্পন্ন হলে, এটি সফল হোক বা ব্যর্থ হোক না কেন, এপিআই সেই একই প্রতিক্রিয়া ফিরিয়ে দেবে যা এটি পাঠানো হয়েছিল যখন আপলোডটি সম্পূর্ণ হয়েছিল।
যাইহোক, যদি আপলোড বাধাপ্রাপ্ত হয় বা এখনও চলছে, তাহলে API প্রতিক্রিয়ার একটি HTTP 308
( Resume Incomplete
) প্রতিক্রিয়া কোড থাকবে৷ প্রতিক্রিয়াতে, Range
হেডারটি নির্দিষ্ট করে যে ফাইলটির কতগুলি বাইট ইতিমধ্যেই সফলভাবে আপলোড করা হয়েছে।
- শিরোনাম মান
0
থেকে সূচিত করা হয়. যেমন,0-999999
হেডার মান নির্দেশ করে যে ফাইলের প্রথম1,000,000
বাইট আপলোড করা হয়েছে। - যদি এখনও কিছু আপলোড না করা হয়, তাহলে API প্রতিক্রিয়া
Range
হেডার অন্তর্ভুক্ত করবে না।
নীচের নমুনা প্রতিক্রিয়া একটি পুনরায় শুরুযোগ্য আপলোডের জন্য একটি API প্রতিক্রিয়ার বিন্যাস দেখায়:
308 Resume Incomplete Content-Length: 0 Range: bytes=0-999999
যদি এপিআই প্রতিক্রিয়াতে Retry-After
শিরোনাম অন্তর্ভুক্ত থাকে, তাহলে আপলোডটি কখন পুনরায় শুরু করতে হবে তা নির্ধারণ করতে সেই শিরোনামের মানটি ব্যবহার করুন।
ধাপ 4.3: আপলোড পুনরায় শুরু করুন
আপলোড পুনরায় শুরু করতে, দ্বিতীয় ধাপে ক্যাপচার করা আপলোড URL-এ আরেকটি PUT
অনুরোধ পাঠান। ভিডিও ফাইলের যে অংশটি এখনও আপলোড করা হয়নি তার জন্য অনুরোধের মূল অংশটি বাইনারি কোডে সেট করুন।
PUT UPLOAD_URL HTTP/1.1 Authorization: Bearer AUTH_TOKEN Content-Length: REMAINING_CONTENT_LENGTH Content-Range: bytes FIRST_BYTE-LAST_BYTE/TOTAL_CONTENT_LENGTH PARTIAL_BINARY_FILE_DATA
আপনাকে নিম্নলিখিত HTTP অনুরোধ শিরোনাম সেট করতে হবে:
Authorization
- অনুরোধের জন্য অনুমোদনের টোকেন।Content-Length
– আকার, বাইটে, যে বিষয়বস্তু এখনও আপলোড করা হয়নি। আপনি যদি একটি ফাইলের অবশিষ্টাংশ আপলোড করছেন, তাহলে আপনিTOTAL_CONTENT_LENGTH
মান থেকেFIRST_BYTE
মান বিয়োগ করে এই মানটি গণনা করতে পারেন৷ উভয় মানইContent-Range
হেডারে ব্যবহৃত হয়।Content-Range
- আপনি যে ফাইলটি আপলোড করছেন তার অংশ। হেডার মান তিনটি মান নিয়ে গঠিত:FIRST_BYTE
– বাইট নম্বরের 0-ভিত্তিক সাংখ্যিক সূচক যা থেকে আপনি আপলোড পুনরায় শুরু করছেন। এই মান পূর্ববর্তী ধাপে পুনরুদ্ধার করাRange
হেডারে দ্বিতীয় সংখ্যার চেয়ে এক সংখ্যা বেশি। পূর্ববর্তী উদাহরণে,Range
হেডারের মান ছিল0-999999
, তাই পরবর্তী আপলোডের প্রথম বাইটটি হবে1000000
।LAST_BYTE
– আপনি যে বাইনারি ফাইলটি আপলোড করছেন তার শেষ বাইটের 0-ভিত্তিক সাংখ্যিক সূচক। সাধারণত, এটি ফাইলের শেষ বাইট। সুতরাং, উদাহরণস্বরূপ, ফাইলের আকার3000000
বাইট হলে, ফাইলের শেষ বাইটটি হবে2999999
নম্বর।TOTAL_CONTENT_LENGTH
– বাইটে ভিডিও ফাইলের মোট আকার। এই মানটি মূল আপলোড অনুরোধে উল্লেখ করাContent-Length
শিরোনামের সমান।
দ্রষ্টব্য: আপনি বাইনারি ফাইলের একটি অবিচ্ছিন্ন ব্লক আপলোড করতে পারবেন না। আপনি যদি একটি অবিচ্ছিন্ন ব্লক আপলোড করার চেষ্টা করেন, তবে অবশিষ্ট বাইনারি সামগ্রীগুলির একটিও আপলোড করা হবে না৷
যেমন, একটি পুনরায় শুরু করা আপলোডে আপলোড করা প্রথম বাইটটি অবশ্যই শেষ বাইটের পরের বাইট হতে হবে যা ইতিমধ্যেই সফলভাবে YouTube-এ আপলোড করা হয়েছে। ( পদক্ষেপ 4.2 -এRange
হেডারের আলোচনা দেখুন।
এইভাবে, যদিRange
হেডারে শেষ বাইটটি999999
হয়, আপলোড পুনরায় শুরু করার অনুরোধের প্রথম বাইটটি অবশ্যই 1000000 বাইট হতে হবে। (উভয় নম্বরই একটি 0-ভিত্তিক সূচক ব্যবহার করে।) আপনি যদি বাইট 999999 থেকে আপলোড পুনরায় শুরু করার চেষ্টা করেন বা নিম্ন (ওভারল্যাপিং বাইট) বা বাইট 1000001 বা উচ্চতর (বাইট এড়িয়ে যাওয়া), বাইনারি বিষয়বস্তুর কোনোটিই আপলোড করা হবে না।
খণ্ডে একটি ফাইল আপলোড করুন
একটি সম্পূর্ণ ফাইল আপলোড করার চেষ্টা করার এবং নেটওয়ার্ক বাধার ক্ষেত্রে আপলোড পুনরায় শুরু করার পরিবর্তে, আপনার অ্যাপ্লিকেশনটি ফাইলটিকে খণ্ডে বিভক্ত করতে পারে এবং ক্রমানুসারে অংশগুলি আপলোড করার জন্য অনুরোধের একটি সিরিজ পাঠাতে পারে। এই পদ্ধতিটি খুব কমই প্রয়োজনীয় এবং প্রকৃতপক্ষে নিরুৎসাহিত করা হয় কারণ এটির জন্য অতিরিক্ত অনুরোধের প্রয়োজন, যার কার্যকারিতার প্রভাব রয়েছে। যাইহোক, যদি আপনি একটি খুব অস্থির নেটওয়ার্কে একটি অগ্রগতি সূচক প্রদর্শন করার চেষ্টা করেন তবে এটি কার্যকর হতে পারে।
খণ্ডে একটি ফাইল আপলোড করার নির্দেশাবলী এই নির্দেশিকায় পূর্বে ব্যাখ্যা করা চার-পদক্ষেপ প্রক্রিয়ার সাথে কার্যত অভিন্ন। যাইহোক, একটি ফাইল আপলোড করা শুরু করার অনুরোধ (উপরের ধাপ 3) এবং একটি আপলোড পুনরায় শুরু করার জন্য (উপরে ধাপ 4.3) উভয়ই Content-Length
এবং Content-Range
হেডারের মান আলাদাভাবে সেট করে যখন একটি ফাইল খণ্ডে আপলোড করা হয়।
Content-Length
শিরোনাম মান অনুরোধটি পাঠানো অংশের আকার নির্দিষ্ট করে। খণ্ড আকারে নিম্নলিখিত সীমাবদ্ধতাগুলি নোট করুন:খণ্ডের আকার অবশ্যই 256 KB এর একাধিক হতে হবে৷ (এই বিধিনিষেধটি শেষ অংশে প্রযোজ্য নয় যেহেতু সম্পূর্ণ ফাইলের আকার 256 KB এর মাল্টিপল নাও হতে পারে।) মনে রাখবেন যে বড় অংশগুলি আরও কার্যকর।
শেষ অনুরোধটি বাদ দিয়ে আপলোড অনুক্রমের প্রতিটি অনুরোধের জন্য খণ্ডের আকার একই হতে হবে, যা চূড়ান্ত অংশের আকার নির্দিষ্ট করে।
Content-Range
শিরোনামটি অনুরোধটি আপলোড করা ফাইলের বাইটগুলি নির্দিষ্ট করে৷ ধাপ 4.3-এContent-Range
হেডার সেট করার নির্দেশাবলী এই মান সেট করার সময় প্রযোজ্য।উদাহরণস্বরূপ,
bytes 0-524287/2000000
মান দেখায় যে অনুরোধটি একটি 2,000,000 বাইট ফাইলে প্রথম 524,288 বাইট (256 x 2048) পাঠাচ্ছে।
নীচের উদাহরণটি একটি 2,000,000 বাইট ফাইল টুকরো টুকরো করে আপলোড করবে এমন অনুরোধের সিরিজের প্রথমটির বিন্যাসটি দেখায়:
PUT UPLOAD_URL HTTP/1.1 Authorization: Bearer AUTH_TOKEN Content-Length: 524888 Content-Type: video/* Content-Range: bytes 0-524287/2000000 {bytes 0-524287}
যদি চূড়ান্ত অনুরোধ ছাড়া অন্য কোনো অনুরোধ সফল হয়, তাহলে API সার্ভার একটি 308
( Resume Incomplete
) প্রতিক্রিয়া সহ প্রতিক্রিয়া জানায়৷ প্রতিক্রিয়া বিন্যাস ধাপ 4.2-এ বর্ণিত হিসাবে একই হবে: উপরে API প্রতিক্রিয়া প্রক্রিয়া করুন ।
পরবর্তী খণ্ডটি কোথায় শুরু করবেন তা নির্ধারণ করতে API প্রতিক্রিয়ার Range
হেডারে প্রত্যাবর্তিত উপরের মানটি ব্যবহার করুন। ধাপ 4.3-এ বর্ণিত PUT
অনুরোধগুলি পাঠানো চালিয়ে যান: সম্পূর্ণ ফাইল আপলোড না হওয়া পর্যন্ত পরবর্তী ফাইলের অংশগুলি আপলোড করতে আপলোড পুনরায় শুরু করুন ।
যখন সম্পূর্ণ ফাইলটি আপলোড করা হয়, সার্ভার একটি 201
HTTP প্রতিক্রিয়া কোড ( Created
) দিয়ে সাড়া দেয় এবং সদ্য নির্মিত ভিডিও সংস্থানের অনুরোধকৃত অংশগুলি ফেরত দেয়।
যদি কোনো অনুরোধ বাধাপ্রাপ্ত হয় বা আপনার অ্যাপ্লিকেশন কোনো 5xx
প্রতিক্রিয়া কোড পায়, আপলোড সম্পূর্ণ করার জন্য ধাপ 4 এ বর্ণিত পদ্ধতি অনুসরণ করুন। যাইহোক, বাকি ফাইল আপলোড করার চেষ্টা করার পরিবর্তে, আপনি যেখানে আপলোড পুনরায় শুরু করছেন সেখান থেকে অংশগুলি আপলোড করা চালিয়ে যান। কোথায় ফাইল আপলোড পুনরায় শুরু করতে হবে তা নির্ধারণ করতে আপলোডের স্থিতি পরীক্ষা করুন ব্যবহার করতে ভুলবেন না। অনুমান করবেন না যে সার্ভার পূর্ববর্তী অনুরোধে প্রেরিত বাইটগুলির সমস্ত (বা কোনটি) গ্রহণ করেনি।
দ্রষ্টব্য: আপনি আপলোড করা অংশগুলির মধ্যে একটি সক্রিয় আপলোডের স্থিতির জন্য অনুরোধ করতে পারেন৷ (আপলোডের স্থিতি পুনরুদ্ধার করার আগে আপলোডটি বাধাগ্রস্ত হওয়ার দরকার নেই।)