uniapp 文件下载(App端下载过的文件可直接打开)
uniapp官方API:
因为uni.saveFile保存的文件名是时间戳,所以我使用的是5+API实现的,如果不在乎文件名的可以结合以下三个接口实现:
uni.downloadFile(OBJECT)下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。
【注:文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 uni.saveFile,才能在应用下次启动时访问得到。】
uni.saveFile(OBJECT)保存文件到本地。
uni.getSavedFileList(OBJECT)获取本地已保存的文件列表。
5+API:
saveFile(item) { const id = item.id const url = http.config.fileUrl + item.filePath // #ifdef APP-PLUS let files = uni.getStorageSync('files') ? JSON.parse(uni.getStorageSync('files')) : {} if (files[id]) { // 已下载的文件直接打开 plus.runtime.openFile(files[id], {}, (res) => { console.log('文件不存在') downloadFile() }) } else { downloadFile() } function downloadFile() { const dtask = plus.downloader.createDownload(url, {}, function (d, status) { if (status == 200) { console.log('保存成功') //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径 //const fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename); plus.runtime.openFile(d.filename);//选择软件打开文件 files[id] = d.filename uni.setStorageSync('files', JSON.stringify(files)) } else { //下载失败 plus.downloader.clear(); //清除下载任务 } }); dtask.start(); } // #endif // #ifdef H5 window.open(url) // #endif },