uniapp下载文件到手机自定义目录实现

您所在的位置:网站首页 央视app怎么下载视频到本地手机 uniapp下载文件到手机自定义目录实现

uniapp下载文件到手机自定义目录实现

2024-07-15 04:31| 来源: 网络整理| 查看: 265

uniapp官方文档使用uni.downloadFile和 uni.saveFile实现下载文件资源到本地和永久保存,实现方法如下: 具体参数说明请参考官方文档: https://uniapp.dcloud.io/api/request/network-file.html

// 文件下载 uni.downloadFile({ url: fileUrl,//下载资源的 url success: res => { console.log(res); if (res.statusCode === 200) { console.log('下载成功'); } console.log(res.tempFilePath); //文件保存到本地 uni.saveFile({ tempFilePath: res.tempFilePath, //临时路径 success: function(res) { console.log(res); uni.showToast({ icon: 'none', mask: true, title: '文件已保存:' + res.savedFilePath, //保存路径 duration: 3000 }); setTimeout(() => { //打开文档查看 uni.openDocument({ filePath: res.savedFilePath, success: function(res) { console.log('打开文档成功'); }, fail: function() { console.log('打开失败'); } }); }, 3000); }, fail: function() { console.log('保存失败'); } }); }, fail: function() { console.log('下载失败'); uni.showToast({ icon: 'none', mask: true, title: '失败请重新下载' }); } });

使用后,下载的文件存放的位置一开始是临时的,转成永久的后它保存的位置在"内部存储\Android\data\io.dcloud.HBuilder\apps\HBuilder\doc\uniapp_save"里,用户很难找到正确位置,不方便操作,并且打开文件后,文件名被篡改了(无法确认下载的文件),还发现后续查看该文件只能再次下载,体验感非常不好。

于是,就想着用H5+API定义的应用沙盒里的plus.downloader来实现:

//注意:url是你要下载的文件路径, xlsName(变量,随便命名) 是文件的后缀名,用于文件命名和格式修改 let dtask = plus.downloader.createDownload(url,{ //1.本地路径开头使用file://; //2.Android平台本地绝对路径为"storage/emulated/0",就是用户文件管理器能看到的了; //3.创建"xxx"作为文件夹名称,后缀是用于文件命名和格式修改,大家可以使用变量。 filename: 'file://storage/emulated/0/xxx/' + xlsName //利用保存路径,实现下载文件的重命名 },function(d, status) {//d为下载的文件对象;status下载状态 console.log(d) if (status == 200) {//下载成功 console.log("下载成功") //d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径 let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename); plus.runtime.openFile(d.filename); //选择软件打开文件 } else {//下载失败 console.log("下载失败") plus.downloader.clear(); //清除下载任务 } } ); dtask.start();//启用

最终,用户能及时的打开文件,后续再想查看此文件,不用重复下载,直接在手机文件管理内准确的找到下载的文件,完美实现想要的效果



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3