今天實現了一個文件下載功能,在網上找了下資料發現有些問題。正則表達式
我用的是小米1s,安卓 4.1.2,cordova 3.5,打包測試運行正常apache
首先在控制層launch方法中加入如下代碼:app
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中須要在建立項目時引入如下插件,this
::引入文件插件
cordova plugin add org.apache.cordova.file
::引入文件管理插件
cordova plugin add org.apache.cordova.file-transferurl