uniapp(安卓)之文件下載
方法:
// 本地路徑開頭使用file://,跟上手機文件本地目錄storage/emulated/0, // 這時用戶文件管理器能看到的了,之後創建 下載文件夾 作爲文件夾, // 後綴是用於文件命名和格式修改,大家可以使用變量。 var url = this.downFileSrc; let dtask = plus.downloader.createDownload(url, { filename: "file://storage/emulated/0/下載文件夾/" + this.downFileName //利用保存路徑,實現下載文件的重命名 },(d, status)=> { //d爲下載的文件對象 if (status == 200) { uni.showToast({ icon: 'none', mask: true, title: '已保存到文件夾:/下載文件夾/' + this.downFileName, //保存路徑 duration: 3000, }); //下載成功,d.filename是文件在保存在本地的相對路徑,使用下面的API可轉爲平臺絕對路徑 let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename); setTimeout(()=>{ plus.runtime.openFile(d.filename); //選擇軟件打開文件 },1500) } else { //下載失敗 plus.downloader.clear(); //清除下載任務 uni.showToast({ icon:'none', mask:true, title: '下載失敗,請稍後重試', }); } }) dtask.start();
注意:
1.url指文件下載的接口路徑。文件將被下載到手機內部存儲的”下載文件夾“文件夾下。接口爲get請求。
2.uni.downloadFile、uni.saveFile的方式也可以將文件保存到手機,但保存的位置不受控制,很難在手機存儲中找到。
3.plus.downloader.createDownload方法保存,由於直接使用請求接口路徑,還需要配置token,所以建議添加到request.js文件中。代碼如下:
downloadFile(url = "",name){ let pathurl = config.uni_app_web_api_url + url; let tocken = storage.get("tocken"); let header = {} if (tocken != null) { header = { "Authorization": 'Bearer ' + tocken, }; } let dtask = plus.downloader.createDownload(pathurl, { filename: "file://storage/emulated/0/下載文件夾/"+name+".pdf" //利用保存路徑,實現下載文件的重命名 },(d, status)=> { console.log(d) console.log(status) //d爲下載的文件對象 if (status == 200) { uni.hideLoading(); uni.showToast({ icon: 'none', mask: true, title: "已保存到文件夾:/下載文件夾/"+name+".pdf", //保存路徑 duration: 3000, }); //下載成功,d.filename是文件在保存在本地的相對路徑,使用下面的API可轉爲平臺絕對路徑 let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename); setTimeout(()=>{ plus.runtime.openFile(d.filename); //選擇軟件打開文件 },1500) } else { //下載失敗 plus.downloader.clear(); //清除下載任務 uni.showToast({ icon:'none', mask:true, title: '下載失敗,請稍後重試', }); } }) dtask.start(); },
調用:(api)
export function exportZrWord(id,name) { return request.downloadFile("/honor/spaceData/exportZrWord?projectId=" + id,name) }
鑽研不易,轉載請註明出處。。。。。。
翻譯
搜索
複製