API มีฟังก์ชันการดาวน์โหลดไฟล์ขั้นสูงที่ยังคงอยู่นอกเหนือจากการยกเลิกแอป ทำงานอยู่เบื้องหลัง และดำเนินการต่อแม้ว่าผู้ใช้จะปิด/ระงับแอปพลิเคชันก็ตาม ปลั๊กอินประกอบด้วยการอัปเดตความคืบหน้าและออกแบบมาเพื่อการดำเนินการถ่ายโอนทรัพยากรในระยะยาวเช่นวิดีโอ เพลง และรูปภาพขนาดใหญ่เป็นหลัก
ตัวอย่างการใช้งาน
var fileName = "PointerEventsCordovaPlugin.wmv", uriString = "http://media.ch9.ms/ch9/8c03/f4fe2512-59e5-4a07-bded-124b06ac8c03/PointerEventsCordovaPlugin.wmv"; // open target file for download window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { fileSystem.root.getFile(fileName, { create: true }, function (targetFile) { var onSuccess, onError, onProgress; // plugin callbacks to track operation execution status and progress var downloader = new BackgroundTransfer.BackgroundDownloader(); // Create a new download operation. var download = downloader.createDownload(uriString, targetFile); // Start the download and persist the promise to be able to cancel the download. app.downloadPromise = download.startAsync().then(onSuccess, onError, onProgress); }); });
ที่เก็บข้อมูลภายในและภายนอก (การ์ด SD) บน Android
ที่จัดเก็บข้อมูลภายนอก
แก้ไขไดเร็กทอรี cordova.file.externalDataDirectory
ในรันไทม์
window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
โปรดทราบว่าอุปกรณ์ดังกล่าวอาจไม่มีที่จัดเก็บข้อมูลภายนอกได้ ในกรณีนี้ cordova.file.externalDataDirectory
จะเป็น null
ดังนั้นควรตรวจสอบก่อนการใช้งาน
ที่จัดเก็บข้อมูลภายใน
แก้ไขไดเร็กทอรี cordova.file.dataDirectory
ในรันไทม์
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
อ่านลักษณะเฉพาะของปลั๊กอินไฟล์สำหรับรายละเอียดเพิ่มเติม:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#android-quirks
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#configuring-the-plugin-optiona
แพลตฟอร์มที่รองรับ
วินโดวส์8
วินโดว์โฟน8
iOS 7.0 หรือใหม่กว่า
หุ่นยนต์
นิสัยแปลกๆ
หากการดำเนินการดาวน์โหลดเสร็จสิ้นเมื่อแอปพลิเคชันอยู่ในพื้นหลัง การเรียกกลับ onSuccess จะถูกเรียกเมื่อแอปพลิเคชันเปิดใช้งาน
หากการดำเนินการดาวน์โหลดเสร็จสิ้นเมื่อแอปพลิเคชันถูกปิด การเรียกกลับ onSuccess จะถูกเรียกทันทีหลังจากเรียกใช้ startAsync() ครั้งแรกสำหรับ uri เดียวกัน ราวกับว่าไฟล์ถูกดาวน์โหลดทันที
การดำเนินการดาวน์โหลดใหม่สำหรับ uri เดียวกันจะดำเนินการดาวน์โหลดที่ค้างอยู่ต่อแทนที่จะเรียกใช้การดาวน์โหลดใหม่ หากไม่พบการดาวน์โหลดที่รอดำเนินการสำหรับ uri ที่ระบุ การดาวน์โหลดใหม่จะเริ่มต้นขึ้น ไฟล์เป้าหมายจะถูกเขียนทับโดยอัตโนมัติเมื่อการดาวน์โหลดเสร็จสิ้น
ไฟล์ดาวน์โหลดชั่วคราวบน Android จะถูกสร้างขึ้นบนที่จัดเก็บข้อมูลภายนอก (ข้อจำกัดของ DownloadManager) ดังนั้นหากไม่มีที่จัดเก็บข้อมูลภายนอก การดาวน์โหลดจะล้มเหลว