小程序中文件下载

wxDownLoad 小程序中文件下载

注:页面请求文件为 node-download/upload 目录下的文件 ,可自行修改

基本思路

wx.onload中读取服务器文件列表 和缓存到本地的文件列表

文件下载:

创建本地目录 /download (创建之前判断此目录是否存在,存在的话则直接保存文件到此目录)

将下载的文件路径缓存到 /download目录中

读取目录/download ,获取当前小程序下载到本地的文件列表

将获取到的文件列表保存至downloadFile数组更新到页面(同时给每个view记录路径data-path)

点击已下载的文件可根据路径data-path打开查看

示例代码

<scroll-view scroll-y class="container"> <view class='defaultfile'> <view wx:for="{{defaultfiles}}" wx:key="index" wx:for-item="item"> <view class="fileText" data-name="{{item}}" bindtap='savefiles'>{{item}} </view> </view> </view> <view class='downloadbox'> <view wx:if="{{downloadFile.length>0}}">下载到本地的文件列表: </view> <view wx:for="{{downloadFile}}" wx:key="index" wx:for-item="item"> <view bindtap='openfile' class='download' data-path="{{item.path}}">{{item.file}} </view> </view> </view> </scroll-view>

Page({ data: { defaultfiles:[], //此数组为后台获取的文件列表 downloadFile:[] //此数组为下载到本地的文件列表 }, 读取本地缓存文件

getLocalFiles(manager, $this) { manager.readdir({ dirPath: `${wx.env.USER_DATA_PATH}/download`, success: (res) => { // console.log('本地文件列表: ', res) let downloadFile = []; res.files.forEach((item, index) => { downloadFile.push({ file: item, path: `${wx.env.USER_DATA_PATH}/download/` + item }) }) $this.setData({ downloadFile, }) }, }) }, 下载文件

wx.downloadFile({ url: serverAddress.url + '/' + fileName, success:(res)=> { // console.log(res, " 下载文件成功"); var filePath = res.tempFilePath; let manager = wx.getFileSystemManager(); //获取全局唯一的文件管理器 //判断目录是否存在 manager.access({ path: `${wx.env.USER_DATA_PATH}/download`, success: (res) => { console.log('已存在path对应目录',res) //保存文件之前查看是否存在此文件 manager.access({ path: `${wx.env.USER_DATA_PATH}/download/${fileName}`, success(res){ // console.log('已存在此文件', res); return false; }, fail(err){ console.log('不存在此文件') manager.saveFile({ tempFilePath: filePath, //filePath为保存到本地的临时路径 filePath: `${wx.env.USER_DATA_PATH}/download/${fileName}`, success: (res) => { $this.getLocalFiles(manager, $this) } }) } }) }, fail: (err) => { console.log(err, '不存在path对应目录') //创建保存文件的目录 manager.mkdir({ dirPath: `${wx.env.USER_DATA_PATH}/download`, recursive: false, success: (res) => { //将临时文件保存到目录 /download manager.saveFile({ tempFilePath: filePath, filePath: `${wx.env.USER_DATA_PATH}/download/${fileName}`, success: (res) => { // console.log(res) $this.getLocalFiles(manager, $this) } }) }, }) } }) } }) 下载后打开文件

openfile(e){ // console.log(e, " e:frkrkookr") let path = e.currentTarget.dataset.path; wx.openDocument({ filePath: path, success:(res)=>{ console.log('读取成功',res) }, fail:(err)=>{ console.log('读取失败',err) } }) } }) 项目启动 static-download为小程序项目, node-download为服务端项目,node-download目录下upload目录为下载的资源文件 启动node服务 cd/node-download 没有安装nodemon 需 npm install -g nodemon cnpm install (安装依赖) npm run dev (启动node服务)

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。