সার্ভার থেকে বড় মিডিয়া ফাইল ডাউনলোড করার সময়, আবার শুরু করা যায় এমন মিডিয়া ডাউনলোড ব্যবহার করে ফাইলটি খণ্ড খণ্ড করে ডাউনলোড করুন। Google API জেনারেট করা লাইব্রেরিতে আবার চালু করা যায় এমন মিডিয়া ডাউনলোডের সাথে ইন্টার্যাক্ট করার জন্য সুবিধাজনক পদ্ধতি রয়েছে।
আবার চালু করা যায় এমন মিডিয়া ডাউনলোড প্রোটোকল, আবার চালু করা যায় এমন মিডিয়া আপলোড প্রোটোকলের মতোই, যা Google Drive API ডকুমেন্টেশনে বর্ণনা করা হয়েছে।
প্রয়োগ সংক্রান্ত বিবরণ
আগ্রহের প্রধান ক্লাসগুলি হল MediaHttpDownloader এবং MediaHttpDownloaderProgressListener। মিডিয়া কন্টেন্ট চাঙ্ক হিসেবে ডাউনলোড করা হয় এবং চাঙ্কের সাইজ কনফিগার করা যায়। কোনও অনুরোধে সার্ভারের সমস্যা দেখা দিলে, অনুরোধটি আবার করা হয়।
পরিষেবা-নির্দিষ্ট জেনারেট করা লাইব্রেরির পদ্ধতিগুলি যদি ডিসকভারি ডকুমেন্টে ডাউনলোড করার সুবিধা দেয়, তাহলে এই পদ্ধতিগুলির জন্য একটি সুবিধাজনক ডাউনলোড পদ্ধতি তৈরি করা হয় যা একটি OutputStream গ্রহণ করে। (Google APIs Discovery Service-এর মাধ্যমে মিডিয়া ডাউনলোড করার ব্যাপারে আরও জানতে, মিডিয়া ডাউনলোড দেখুন।)
যেমন:
class CustomProgressListener implements MediaHttpDownloaderProgressListener {
public void progressChanged(MediaHttpDownloader downloader) {
switch (downloader.getDownloadState()) {
case MEDIA_IN_PROGRESS:
System.out.println(downloader.getProgress());
break;
case MEDIA_COMPLETE:
System.out.println("Download is complete!");
}
}
}
OutputStream out = new FileOutputStream("/tmp/driveFile.jpg");
DriveFiles.Get request = drive.files().get(fileId);
request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener());
request.executeMediaAndDownloadTo(out);
এছাড়াও, আপনি পরিষেবা-নির্দিষ্ট জেনারেট করা লাইব্রেরি ছাড়াই এই ফিচার ব্যবহার করতে পারবেন। এখানে একটি উদাহরণ দেওয়া হল:
OutputStream out = new FileOutputStream("/tmp/Test.jpg");
MediaHttpDownloader downloader = new MediaHttpDownloader(transport, httpRequestInitializer);
downloader.setProgressListener(new CustomProgressListener());
downloader.download(requestUrl, out);
সরাসরি মিডিয়া ডাউনলোড
মিডিয়া ডাউনলোড আবার শুরু করার সুবিধা ডিফল্ট হিসেবে চালু থাকে, তবে আপনি এটি বন্ধ করে দিয়ে সরাসরি মিডিয়া ডাউনলোড করার সুবিধা ব্যবহার করতে পারেন, যেমন আপনি যদি ছোট ফাইল ডাউনলোড করেন। Java-র জন্য Google API ক্লায়েন্ট লাইব্রেরির 1.9.0-beta ভার্সনে সরাসরি মিডিয়া ডাউনলোড করার সুবিধা চালু করা হয়েছে।
ডাইরেক্ট মিডিয়া ডাউনলোড, একটি HTTP অনুরোধে সম্পূর্ণ মিডিয়া কন্টেন্ট ডাউনলোড করে, রিজিউমেবল মিডিয়া ডাউনলোড প্রোটোকলের মতো নয়, যা একাধিক অনুরোধে ডাউনলোড করতে পারে। সরাসরি ডাউনলোড করলে HTTP অনুরোধের সংখ্যা কমে যায়, কিন্তু বড় ফাইল ডাউনলোডের ক্ষেত্রে ব্যর্থ হওয়ার (যেমন, কানেকশন ব্যর্থ হওয়া) সম্ভাবনা বেড়ে যায়।
ব্যবহার উপরে বর্ণিত একই, প্লাস নিম্নলিখিত কল যা বলে MediaHttpDownloader সরাসরি ডাউনলোড করতে:
mediaHttpDownloader.setDirectDownloadEnabled(true);