sencha touch + Cordova 3.x下载文件
今天实现了一个文件下载功能,在网上找了下资料发现有些问题。
我用的是小米1s,安卓 4.1.2,cordova 3.5,打包测试运行正常
首先在控制层launch方法中加入以下代码:
1 // 等待加载PhoneGap 2 document.addEventListener("deviceready", onDeviceReady, false); 3 // PhoneGap加载完毕 4 function onDeviceReady() { 5 //查找是否有zgky这个文件夹,没有则创建,然后找到这个文件夹的绝对路径 6 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) { 7 //util.appRootDirName 全局变量,这里是zgky 8 fileSystem.root.getDirectory(util.appRootDirName, { 9 create: true, 10 exclusive: false 11 }, function (entry) { 12 //网上流传的资料中都是使用fullPath,在这里我获取到的是相对目录,在下载时使用会报错,所以换做了toURL() 13 //这是一个全局全局变量,用以保存路径 14 util.fullPath = entry.toURL(); 15 //console.log('创建文件夹成功'); 16 //console.log(util.fullPath); 17 }, function () { 18 console.log('创建文件夹失败'); 19 }); 20 }, function () { 21 console.log('创建文件夹失败'); 22 }); 23 }
在获取到一个绝对路径之后,我们就可以用一个方法来下载文件了,方法如下,调用此方法即可下载。
1 downFile: function (url) { 2 var me = this, 3 //正则表达式,用于获取文件名称 4 reg = /[^\\\/]*[\\\/]+/g, 5 //获取下载地址,me.fullPath在main控制层中获取,这是一个全局变量 6 filePath = me.fullPath + "/" + url.replace(reg, ''), 7 //下载地址 8 url = encodeURI(url), 9 fileTransfer = new FileTransfer(); 10 console.log('正在下载中,请等待...'); 11 fileTransfer.download(url, filePath, 12 function (entry) { 13 console.log('下载成功!请在' + entry.fullPath + '目录中查看');
15 }, 16 function (error) { 17 console.log('下载失败!' + error.source);
19 }); 20 }
在cordova中需要在创建项目时引入以下插件,
::引入文件插件
cordova plugin add org.apache.cordova.file
::引入文件管理插件
cordova plugin add org.apache.cordova.file-transfer