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); }); });
Android 上的內部儲存與外部儲存(SD 卡)
外部存儲
在運行時解析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
支援的平台
Windows8
Windows Phone8
iOS 7.0 或更高版本
安卓
怪癖
如果下載操作在應用程式處於背景時完成,則當應用程式變為活動狀態時,將呼叫 onSuccess 回呼。
如果應用程式關閉時下載操作已完成,則在為相同 uri 呼叫第一個 startAsync() 後立即呼叫 onSuccess 回調,就好像檔案已立即下載一樣。
對同一 uri 的新下載操作將恢復掛起的下載,而不是觸發新的下載。如果未找到指定 uri 的待下載內容,則會開始新的下載,下載完成後將自動覆蓋目標檔案。
在Android上,臨時下載檔案是在外部儲存體上建立的(DownloadManager的限制),因此如果沒有外部存儲,下載將失敗。