সরাসরি এবং পুনঃসূচনাযোগ্য মিডিয়া আপলোড

এই দস্তাবেজটি বর্ণনা করে যে কীভাবে জাভার জন্য Google API ক্লায়েন্ট লাইব্রেরির সাথে সরাসরি এবং পুনরায় শুরুযোগ্য মিডিয়া আপলোডগুলি ব্যবহার করতে হয়।

পুনঃসূচনাযোগ্য মিডিয়া আপলোড

আপনি যখন একটি সার্ভারে একটি বড় মিডিয়া ফাইল আপলোড করেন, তখন ফাইল খণ্ড খণ্ড করে পাঠাতে পুনরায় শুরুযোগ্য মিডিয়া আপলোড ব্যবহার করুন। Google API জেনারেট করা লাইব্রেরিগুলিতে পুনঃসূচনাযোগ্য মিডিয়া আপলোডের সাথে ইন্টারঅ্যাক্ট করার সুবিধার পদ্ধতি রয়েছে৷

পুনঃসূচনাযোগ্য মিডিয়া আপলোড প্রোটোকলটি Google ড্রাইভ API ডকুমেন্টেশনে বর্ণিত পুনঃসূচনাযোগ্য মিডিয়া আপলোড প্রোটোকলের অনুরূপ।

প্রোটোকল ডিজাইন

নিম্নোক্ত সিকোয়েন্স ডায়াগ্রাম দেখায় কিভাবে পুনরায় শুরু করা যায় এমন মিডিয়া আপলোড প্রোটোকল কাজ করে:
ক্লায়েন্ট এবং সার্ভারের মধ্যে অনুরোধ এবং প্রতিক্রিয়াগুলি কীভাবে স্থানান্তরিত হয় তা দেখানো সিকোয়েন্স ডায়াগ্রাম।

বাস্তবায়নের বিবরণ

আগ্রহের প্রধান শ্রেণী হল MediaHttpUploader এবং MediaHttpProgressListener

যদি পরিষেবা-নির্দিষ্ট উত্পন্ন লাইব্রেরির পদ্ধতিতে ডিসকভারি নথিতে mediaUpload প্যারামিটার থাকে, তাহলে এই পদ্ধতিগুলির জন্য একটি সুবিধার পদ্ধতি তৈরি করা হয় যা একটি ইনপুটস্ট্রিম সামগ্রীকে প্যারামিটার হিসাবে গ্রহণ করে। (Google APIs ডিসকভারি সার্ভিসের সাথে মিডিয়া আপলোড ব্যবহার সম্পর্কে আরও জানতে, মিডিয়া আপলোড দেখুন।)

উদাহরণস্বরূপ, ড্রাইভ API- এর insert পদ্ধতি mediaUpload সমর্থন করে, এবং আপনি একটি ফাইল আপলোড করতে নিম্নলিখিত কোড ব্যবহার করতে পারেন:

class CustomProgressListener implements MediaHttpUploaderProgressListener {
  public void progressChanged(MediaHttpUploader uploader) throws IOException {
    switch (uploader.getUploadState()) {
      case INITIATION_STARTED:
        System.out.println("Initiation has started!");
        break;
      case INITIATION_COMPLETE:
        System.out.println("Initiation is complete!");
        break;
      case MEDIA_IN_PROGRESS:
        System.out.println(uploader.getProgress());
        break;
      case MEDIA_COMPLETE:
        System.out.println("Upload is complete!");
    }
  }
}

File mediaFile = new File("/tmp/driveFile.jpg");
InputStreamContent mediaContent =
    new InputStreamContent("image/jpeg",
        new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());

Drive.Files.Insert request = drive.files().insert(fileMetadata, mediaContent);
request.getMediaHttpUploader().setProgressListener(new CustomProgressListener());
request.execute();

আপনি পরিষেবা-নির্দিষ্ট উত্পন্ন লাইব্রেরি ছাড়াই পুনরায় শুরুযোগ্য মিডিয়া আপলোড বৈশিষ্ট্যটি ব্যবহার করতে পারেন। এখানে একটি উদাহরণ:

File mediaFile = new File("/tmp/Test.jpg");
InputStreamContent mediaContent =
    new InputStreamContent("image/jpeg",
        new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());

MediaHttpUploader uploader = new MediaHttpUploader(mediaContent, transport, httpRequestInitializer); uploader.setProgressListener(new CustomProgressListener()); HttpResponse response = uploader.upload(requestUrl); if (!response.isSuccessStatusCode()) { throw GoogleJsonResponseException(jsonFactory, response); }

সরাসরি মিডিয়া আপলোড

পুনঃসূচনাযোগ্য মিডিয়া আপলোড ডিফল্টরূপে সক্ষম থাকে, তবে আপনি এটি অক্ষম করতে পারেন এবং পরিবর্তে সরাসরি মিডিয়া আপলোড ব্যবহার করতে পারেন, উদাহরণস্বরূপ যদি আপনি একটি ছোট ফাইল আপলোড করছেন৷ জাভার জন্য Google API ক্লায়েন্ট লাইব্রেরির 1.9.0-বিটা সংস্করণে সরাসরি মিডিয়া আপলোড চালু করা হয়েছিল।

ডাইরেক্ট মিডিয়া আপলোড পুরো ফাইলটিকে একটি HTTP অনুরোধে আপলোড করে, রিজুমেবল মিডিয়া আপলোড প্রোটোকলের বিপরীতে, যা একাধিক অনুরোধে ফাইল আপলোড করে। সরাসরি আপলোড করলে HTTP অনুরোধের সংখ্যা কমে যায় কিন্তু বড় আপলোডের ক্ষেত্রে ব্যর্থতার (যেমন সংযোগ ব্যর্থতা) হওয়ার সম্ভাবনা বেড়ে যায়।

সরাসরি মিডিয়া আপলোডের জন্য ব্যবহারটি পুনরায় শুরু করা মিডিয়া আপলোডের জন্য উপরে বর্ণিত হিসাবে একই, এছাড়াও নিম্নলিখিত কল যা MediaHttpUploaderকে শুধুমাত্র সরাসরি আপলোড করতে বলে:

mediaHttpUploader.setDirectUploadEnabled(true);