सीधे तौर पर और फिर से शुरू किए जा सकने वाले मीडिया अपलोड

इस दस्तावेज़ में बताया गया है कि तो आपको Java के लिए Google API क्लाइंट लाइब्रेरी का इस्तेमाल करना चाहिए.

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

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

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

प्रोटोकॉल डिज़ाइन

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

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

रुचि के मुख्य क्लास ये हैं MediaHttpUploader और MediaHttpProgressListener.

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

उदाहरण के लिए, 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); }

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

सीधे तौर पर अपलोड किया जाने वाला मीडिया

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

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

डायरेक्ट मीडिया अपलोड का इस्तेमाल, ऊपर बताए गए तरीके जैसा ही है फिर से शुरू किए जा सकने वाले मीडिया अपलोड के साथ-साथ MediaHttpUploader को नीचे दिया गया कॉल सिर्फ़ डायरेक्ट अपलोड करने के लिए:

mediaHttpUploader.setDirectUploadEnabled(true);