عمليات تنزيل الوسائط القابلة للاستئناف

عند تنزيل ملف وسائط كبير من خادم، استخدم resumable media download لتنزيل مقطع الملف مقطع. واجهة برمجة تطبيقات Google تحتوي المكتبات التي تم إنشاؤها على طرق ملائمة للتفاعل مع نماذج تنزيل الوسائط.

يشبه بروتوكول تنزيل الوسائط القابل للاستئناف عملية تحميل الوسائط القابلة للاستئناف. كما هو موضح في مستندات حول Google Drive API

تفاصيل التنفيذ

فئات الاهتمام الرئيسية هي MediaHttpDownloader وMediaHttpDownloaderProgressListener. يتم تنزيل محتوى الوسائط في مجموعات، ويمكن تهيئة حجم المقطع. إذا خطأ في الخادم في أحد الطلبات، ثم تتم إعادة محاولة الطلب.

إذا كانت الطرق في المكتبات التي تم إنشاؤها خاصة بالخدمة تتيح التنزيل في مستند استكشاف، ثم طريقة التنزيل المناسبة لهذه الطرق والتي تستغرق OutputStream: (لمزيد من المعلومات عن استخدام تنزيل الوسائط مع خدمة Google APIs Discovery، يمكنك الاطّلاع على تنزيل الوسائط)

على سبيل المثال:

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);

تنزيل الوسائط مباشرةً

يتم تفعيل تنزيل الوسائط القابلة للاستئناف بشكل تلقائي، ولكن يمكنك إيقافه واستخدام تنزيل وسائط مباشرة بدلاً من ذلك، على سبيل المثال إذا كنت تنزّل ملفًا صغيرًا. تم تقديم تنزيل الوسائط المباشرة في 1.9.0-beta من مكتبة برامج Google API للغة Java.

وتعمل ميزة التنزيل المباشر للوسائط على تنزيل محتوى الوسائط بالكامل في طلب HTTP واحد، ببروتوكول تنزيل الوسائط القابلة للاستئناف، الذي يمكن تنزيله في الطلبات. يؤدي إجراء التنزيل المباشر إلى تقليل عدد طلبات HTTP غير أنه زيادة فرص حدوث إخفاقات (مثل إخفاقات الاتصال) قد تحدث من خلال التنزيلات الكبيرة.

يتطابق الاستخدام مع ما هو موضح أعلاه، بالإضافة إلى ما يلي: مكالمة تخبر MediaHttpDownloader لإجراء تنزيلات مباشرة:

mediaHttpDownloader.setDirectDownloadEnabled(true);