এই ডকুমেন্ট থেকে আপনি জানতে পারবেন যে Java-র জন্য Google API ক্লায়েন্ট লাইব্রেরির সাথে কীভাবে সরাসরি ও রিজুম করা যায় এমন মিডিয়া আপলোড ব্যবহার করতে হয়।
আবার চালু করা যায় এমন মিডিয়া আপলোড
সার্ভারে বড় মিডিয়া ফাইল আপলোড করার সময়, আবার শুরু করা যায় এমন মিডিয়া আপলোড ব্যবহার করে ফাইলটি খণ্ড খণ্ড করে পাঠান। Google API-এর মাধ্যমে তৈরি করা লাইব্রেরিতে রিসিউম করা যায় এমন মিডিয়া আপলোডের সাথে ইন্টার্যাক্ট করার জন্য সুবিধাজনক পদ্ধতি রয়েছে।
রিজিউমেবল মিডিয়া আপলোড প্রোটোকলটি Google Drive API ডকুমেন্টেশনে বর্ণিত রিজিউমেবল মিডিয়া আপলোড প্রোটোকলের মতোই।
প্রোটোকল ডিজাইন
নিচের সিকোয়েন্স ডায়াগ্রাম থেকে বোঝা যাবে যে কীভাবে রিজিউমেবল মিডিয়া আপলোড প্রোটোকল কাজ করে:

প্রয়োগ সংক্রান্ত বিবরণ
আগ্রহের প্রধান ক্লাসগুলি হল MediaHttpUploader এবং MediaHttpProgressListener।
পরিষেবা-নির্দিষ্ট জেনারেট করা লাইব্রেরির পদ্ধতিতে ডিসকভারি ডকুমেন্টে mediaUpload
প্যারামিটার থাকলে,
এইসব পদ্ধতির জন্য একটি সুবিধাজনক পদ্ধতি তৈরি করা হয় যা
InputStreamContent-কে
প্যারামিটার হিসেবে গ্রহণ করে। (Google APIs
Discovery Service-এর সাথে মিডিয়া আপলোড ব্যবহার করার ব্যাপারে আরও জানতে,
মিডিয়া আপলোড দেখুন।)
যেমন, Drive 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); }
সরাসরি মিডিয়া আপলোড
ডিফল্ট হিসেবে, মিডিয়া আপলোড করার সময় তা আবার চালু করার সুবিধা চালু থাকে, তবে আপনি এটি বন্ধ করে সরাসরি মিডিয়া আপলোড করার সুবিধা ব্যবহার করতে পারেন, যেমন আপনি ছোট ফাইল আপলোড করলে এটি করতে পারেন। Java-র জন্য Google API ক্লায়েন্ট লাইব্রেরির 1.9.0-beta ভার্সনে সরাসরি মিডিয়া আপলোড করার সুবিধা চালু করা হয়েছে।
সরাসরি মিডিয়া আপলোড একটি HTTP অনুরোধে পুরো ফাইলটি আপলোড করে, এর বিপরীতে রিজুমেবল মিডিয়া আপলোড প্রোটোকল, যা একাধিক অনুরোধে ফাইল আপলোড করে। সরাসরি আপলোড করলে HTTP অনুরোধের সংখ্যা কমে যায়, তবে বড় ফাইল আপলোড করার সময় ব্যর্থ হওয়ার (যেমন, কানেকশন ব্যর্থ হওয়া) সম্ভাবনা বেড়ে যায়।
সরাসরি মিডিয়া আপলোডের ব্যবহার উপরে বর্ণিত রিজিউম করা যায় এমন মিডিয়া আপলোডের মতোই, এছাড়াও নিম্নলিখিত কলটি MediaHttpUploader-কে শুধুমাত্র সরাসরি আপলোড করতে বলে:
mediaHttpUploader.setDirectUploadEnabled(true);