小程序批量下载文件到本地用户文件夹

由于小程序大小2M限制所以用到的音频图片啥的可以放到第三方平台百度网盘或小程序云储存,然后在用户首次使用时把资源下载到本地,以后启动时检查是否存在此文件不在就下载,理论不卸载小程序文件一直在,空间为10M

封装批量下载js

把下面代码复制后新建一个js,命名为
downloadfile.js把代码添加进去,

 function download(obj) {let success = obj.success; //下载成功let fail = obj.fail; //下载失败let ml = obj.ml //目录let data = obj.data //数据let split = obj.split;   //你自己的链接部分let manager = wx.getFileSystemManager();  //获取全局唯一的文件管理器//判断目录是否存在manager.access({path: `${wx.env.USER_DATA_PATH}/${ml}`,success: (res) => {// console.log('已存在path对应目录',res)//保存文件之前查看是否存在此文件  let c=0let down = wx.getStorageSync(ml)for (let item of data) { let filename = item.split(split)[1];manager.access({path: `${wx.env.USER_DATA_PATH}/${ml}/${filename}`,success(res) {c=c+1console.log('已存在此文件', res,c);//return false;if(c==data.length){console.log('下载完毕')success(down);}},fail(err) {console.log('不存在此文件')wx.downloadFile({url: item,filePath: `${wx.env.USER_DATA_PATH}/${ml}/${filename}`, //设置路径,并且设置文件名为${filename}success: function (res) {c = c + 1console.log('下载单个成功', res, item,c)for(let i of down){if(i.item==item){i.filePath=res.filePath}else{let filePath = res.filePathdown.push({ item, filePath })}}wx.setStorageSync(ml, down)if (c == data.length) {console.log('下载完毕')success(down);}},fail: function (e) {console.info("下载一个文件失败", item, e);if (fail) {fail(e);}}})}})}},fail: (err) => {// console.log(err, '不存在path对应目录')//创建保存文件的目录manager.mkdir({dirPath: `${wx.env.USER_DATA_PATH}/${ml}`,recursive: false,success: (res) => {//将临时文件保存到目录  /${ml}let down = []for (let item of data) {let filename = item.split(split)[1];wx.downloadFile({url: item,filePath: `${wx.env.USER_DATA_PATH}/${ml}/${filename}`, //设置路径,并且设置文件名为${filename}success: function (res) {console.log('下载成功', res, item)let filePath = res.filePathdown.push({ item, filePath })if (down.length == data.length) {wx.setStorageSync(ml, down)success(down);}},fail: function (e) {console.info("下载一个文件失败", item, e);if (fail) {fail(e);}}})}},fail: (err) => {console.log('文件夹创建失败', err)if (fail) {fail(err);}}})}})
}
module.exports = {download: download
}

在需要使用的界面js中加入下面代码

import download from "../../utils/downloadfile.js"//你刚才创建的那个downloadfile.js路径
data:{mp3: ['https://tcb.qcloud.la/audiod/10seconds.mp3', 'https://tcb.qcloud.la/audiod/allclose.mp3', 'https://tcb.qcloud.la/audiod/allopen.mp3']
},
//下载资源
downloadmp3() {return new Promise((resolve, reject) => {download.download({data:this.data.mp3,
ml: 'mp3',//目录名字
split: 'https://tcb.qcloud.la/audiod/',//截取你网址的前面部分留后面的名字
success: function (res) {console.log('下载mp3成功返回的', res)
resolve(res)
},
fail: function (e) {wx.hideLoading();
wx.showToast({title: 'MP3资源下载失败',
icon: none,
duration: 2000
})
console.info("下载mp3失败", e);
reject(e)
}
});})
},

在给你一个检测的代码检测目前下载了那些文件和删除的代码自己分离下,下面代码建议单独建立一个test页

test2(){//获取缓存文件删除
wx.getSavedFileList({success(res) {console.log(res)
if (res.fileList.length > 0) {for (let i = 0; i < res.fileList.length; i++){wx.removeSavedFile({filePath: res.fileList[i].filePath,
complete(res) {console.log('删除缓存',res)
}
})
}
}
}
})
//读取用户文件删除
FileSystemManager.readdir({dirPath: `${wx.env.USER_DATA_PATH}/mp3/`,
success: function (res) {console.log('res系统文件管理', res)
for (let item of res.files) {//除miniprogramLog这个文件不删
if (item != 'miniprogramLog') {FileSystemManager.unlink({filePath: `${wx.env.USER_DATA_PATH}/mp3/${item}`,//删除路径mp3目录
success: function (res) {console.log('res系统文件管理删除成功', res)
},
fail: (err) => {console.log('res系统文件管理删除失败: ', err)
}
})
}
}
},
fail: (err) => {console.log('本地文件列表读取失败: ', err)
}
})
},//读取本地文件
getsavedinfo() {var countsize=0
FileSystemManager.readdir({dirPath: `${wx.env.USER_DATA_PATH}/mp3/`,
success: function(res){console.log('res系统文件管理',res)
for(let item of res.files){if (item != 'miniprogramLog'){FileSystemManager.getFileInfo({filePath: `${wx.env.USER_DATA_PATH}/mp3/${item}`,
success: function (re) {countsize+=re.size/1024
if (item == res.files[res.files.length-1]){console.log('用户文件总大小' + countsize + 'kb')
}
},
fail: (err) => {console.log('查询失败: ', err)
}
})
}
}
},
fail: (err) => {console.log('本地文件列表读取失败: ',err)}
})//读取缓存文件
wx.getSavedFileList({success(res) {console.log(res)
var size=0
for (let item of res.fileList){size +=item.size
}
console.log('缓存总大小',size)
}
})},



小程序文件批量下载保存相关推荐

  1. 亿彩文件批量下载器 v3.0

    简介: 亿彩文件批量下载器,主要用于对已知的网络文件的Url,将其批量下载到本地上,并根据需要自动更名下载后的文件,功能丰富强大;支撑大容量几十万几百万条的下载,支持特殊网址的导入,支持保留网络路径结 ...

  2. 小程序 超长页面截图保存web-view+html2canvas

    web-view文档建议参考----支付宝提供的文档,html2canvas官方文档(官网可以下载html2canvas.js 和 html2canvas.min.js).由于篇幅受限,这里就贴了一下 ...

  3. 云开发表情包制作神器微信小程序源码下载,支持各种自定义

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

  4. 【小程序源码】云开发表情包制作神器微信小程序源码下载,支持各种自定义

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

  5. 微信小程序Excel生成下载浏览分享

    微信小程序Excel生成下载浏览分享 完整流程 遇到的小问题 完整流程 主要是为了实现小程序前端从后端下载excel文件并浏览和分享excel文件给其他用户 主要实现步骤:通过后端返回的字节流 : w ...

  6. 流量主头像组合微信小程序源码下载支持多种分类并支持姓氏头像制作生成

    这是一个头像类型的小程序源码 支持多种流量主 比如激励视频,Banner,视频,插屏,原生模板等 小程序内包含多种头像非类,都是自动采集 比如男生头像,男声头像,动漫头像等等 另外该小程序还支持姓氏头 ...

  7. 王者荣耀战力查询小程序源码下载-支持安卓ios微信和QQ战力查询支持打包成APP

    王者荣耀战力查询小程序源码下载-支持安卓ios微信和QQ战力查询支持打包成APP 该源码没有后台的也无需后台的,所以也就没有什么服务器和域名的烦恼和费用了 使用方法用HBuilder X软件打开文件然 ...

  8. 好玩的表情包机器人微信小程序源码下载支持直接搜索仿聊天界面获取支持流量主

    这是一款和表情包有关的一款机器人小程序 界面就相当于是聊天界面,然后是你和AI的界面 打开小程序后会自动全网推送几个表情包给你 然后你可以点击下方的说你还要然后又会随机发给你 当然你也可以输入关键词然 ...

  9. 独立后台月老办事处一元交友盲盒微信小程序源码下载,可自定义价格

    最近超火的月老办事处交友盲盒程序,支持自定义存取价格,独立后台,存取小纸条盲盒交友匹配交友趣味交友同城交友 前端时间小编也给大家发过一款云开发版本的月老小程序 今天呢给大家发的这一款是独立后台的需要服 ...

最新文章

  1. rsync 断点续传
  2. MySQL 绿色版安装方法图文教程
  3. php的cookie变量作用,PHP语言中cookie的作用
  4. php load dynamic library,PHP startup: Unable to load dynamic library错误的错误
  5. 如何从零搭建一个hexo博客网站01
  6. wince中实现SQLite数据库及二进制文件保存与读取
  7. python virtualenv_python之virtualenv的简单使用方法(必看篇)
  8. flash用FlashPlayer将一个swf打包成exe
  9. 前缀和计算机相关,网络设置子网掩码和前缀长度计算机应用知识
  10. Android 显示大尺寸图片
  11. python 基础代谢率计算_基于python实现计算且附带进度条代码实例
  12. 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送
  13. No.8 CA证书和SSH服务
  14. Android 使用ADB命令向上滑动解锁
  15. Vue安装并使用axios发送请求
  16. 实现百度第三方登陆详细解答
  17. 告别LiveServer,vscode微软官方的LivePreview来了
  18. 2022-2027年中国烟用香精香料行业发展前景及投资战略咨询报告
  19. Android 11 变更及适配攻略
  20. 制造企业如何从0到1进行信息化建设?

热门文章

  1. [项目管理-12]:项目经理的困惑:项目管理的常见难题及解决对策
  2. 实战:如何运营一家淘宝店铺?
  3. matlab如何花间,酌酒花间,磨针石上;倚剑天下,挂弓扶桑。赞颂的是谁
  4. 卫星天线驻波比,天线增益,天线极化方式,天线轴比解读
  5. 如何把视频分屏?教你轻松学会视频分屏
  6. java 盲水印_GitHub - Yxiaojian/BlindWaterMark: Java盲水印
  7. Python爬虫学习记录(3)——用Python获取虾米加心歌曲,并获取MP3下载地址
  8. java 日文片假名半角转全角_日文 全角/半角 平假名/片假名 的转换
  9. 离散度计算公式 python_SciPyTutorial-离散卷积convolve
  10. 国内12所最奢华的图书馆,看到这儿我愿意再考一年!