फिर से शुरू किए जा सकने वाले मीडिया डाउनलोड

किसी सर्वर से बड़ी मीडिया फ़ाइल डाउनलोड करते समय, फ़ाइल के अलग-अलग हिस्सों को फिर से शुरू किया जा सकने वाला मीडिया डाउनलोड इस्तेमाल करें. Google API से जनरेट की गई लाइब्रेरी में, फिर से शुरू किए जा सकने वाले मीडिया डाउनलोड के साथ इंटरैक्ट करने के आसान तरीके मौजूद होते हैं.

फिर से शुरू करने लायक मीडिया डाउनलोड प्रोटोकॉल, फिर से शुरू किए जा सकने वाले मीडिया अपलोड प्रोटोकॉल के जैसा ही है, जिसकी जानकारी Google Drive API दस्तावेज़ में दी गई है.

क्रियान्वयन विवरण

MediaHttpDownloader और MediaHttpDownloaderProgressListener की दिलचस्पी किन मुख्य कैटगरी में आती है. मीडिया कॉन्टेंट को कई हिस्सों में डाउनलोड किया जाता है और अलग-अलग साइज़ को कॉन्फ़िगर किया जा सकता है. अगर किसी अनुरोध में सर्वर की गड़बड़ी मिलती है, तो अनुरोध को फिर से प्रोसेस करने की कोशिश की जाती है.

अगर किसी खास सेवा के हिसाब से जनरेट की गई लाइब्रेरी के तरीकों के लिए, डिस्कवरी दस्तावेज़ में डाउनलोड करने की सुविधा उपलब्ध है, तो इन तरीकों के लिए डाउनलोड करने का एक आसान तरीका बनाया जाता है. यह तरीका OutputStream में शामिल होता है. (Google API डिस्कवरी सर्विस की मदद से मीडिया डाउनलोड करने के बारे में ज़्यादा जानने के लिए, मीडिया डाउनलोड देखें.)

उदाहरण के लिए:

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 वर्शन में लॉन्च की गई थी.

डायरेक्ट मीडिया डाउनलोड, पूरे मीडिया कॉन्टेंट को एक एचटीटीपी अनुरोध में डाउनलोड करता है. हालांकि, फिर से शुरू किए जा सकने वाले मीडिया डाउनलोड प्रोटोकॉल से, कॉन्टेंट को एक से ज़्यादा अनुरोधों में डाउनलोड किया जा सकता है. सीधे तौर पर डाउनलोड करने से एचटीटीपी अनुरोधों की संख्या कम हो जाती है. हालांकि, बड़े डाउनलोड के साथ होने वाली गड़बड़ियों (जैसे कि कनेक्शन के काम न करना) की संभावना कम हो जाती है.

इस्तेमाल, ऊपर बताए गए तरीके जैसा ही है. साथ ही, इस कॉल से MediaHttpDownloader को सीधे तौर पर डाउनलोड करने के लिए कहा जाता है:

mediaHttpDownloader.setDirectDownloadEnabled(true);