পুনরায় শুরু করা আপলোড

আপনি 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 এ বর্ণিত পদ্ধতি অনুসরণ করুন। যাইহোক, বাকি ফাইল আপলোড করার চেষ্টা করার পরিবর্তে, আপনি যেখানে আপলোড পুনরায় শুরু করছেন সেখান থেকে অংশগুলি আপলোড করা চালিয়ে যান। কোথায় ফাইল আপলোড পুনরায় শুরু করতে হবে তা নির্ধারণ করতে আপলোডের স্থিতি পরীক্ষা করুন ব্যবহার করতে ভুলবেন না। অনুমান করবেন না যে সার্ভার পূর্ববর্তী অনুরোধে প্রেরিত বাইটগুলির সমস্ত (বা কোনটি) গ্রহণ করেনি।

দ্রষ্টব্য: আপনি আপলোড করা অংশগুলির মধ্যে একটি সক্রিয় আপলোডের স্থিতির জন্য অনুরোধ করতে পারেন৷ (আপলোডের স্থিতি পুনরুদ্ধার করার আগে আপলোডটি বাধাগ্রস্ত হওয়ার দরকার নেই।)