sencha touch + Cordova 3.x下载文件

时间:2023-03-09 19:54:12
sencha touch + Cordova 3.x下载文件

今天实现了一个文件下载功能,在网上找了下资料发现有些问题。

我用的是小米1s,安卓 4.1.2,cordova 3.5,打包测试运行正常

首先在控制层launch方法中加入以下代码:

         // 等待加载PhoneGap
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap加载完毕
function onDeviceReady() {
//查找是否有zgky这个文件夹,没有则创建,然后找到这个文件夹的绝对路径
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
//util.appRootDirName 全局变量,这里是zgky
fileSystem.root.getDirectory(util.appRootDirName, {
create: true,
exclusive: false
}, function (entry) {
//网上流传的资料中都是使用fullPath,在这里我获取到的是相对目录,在下载时使用会报错,所以换做了toURL()
//这是一个全局全局变量,用以保存路径
util.fullPath = entry.toURL();
//console.log('创建文件夹成功');
//console.log(util.fullPath);
}, function () {
console.log('创建文件夹失败');
});
}, function () {
console.log('创建文件夹失败');
});
}

在获取到一个绝对路径之后,我们就可以用一个方法来下载文件了,方法如下,调用此方法即可下载。

   downFile: function (url) {
var me = this,
//正则表达式,用于获取文件名称
reg = /[^\\\/]*[\\\/]+/g,
//获取下载地址,me.fullPath在main控制层中获取,这是一个全局变量
filePath = me.fullPath + "/" + url.replace(reg, ''),
//下载地址
url = encodeURI(url),
fileTransfer = new FileTransfer();
 console.log('正在下载中,请等待...');
fileTransfer.download(url, filePath,
function (entry) {
 console.log('下载成功!请在' + entry.fullPath + '目录中查看');
},
function (error) {
 console.log('下载失败!' + error.source);
});
}

在cordova中需要在创建项目时引入以下插件,

::引入文件插件
cordova plugin add org.apache.cordova.file
::引入文件管理插件
cordova plugin add org.apache.cordova.file-transfer