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的限制),因此如果没有外部存储,下载将失败。