前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序文件下载并保存文件名打开

小程序文件下载并保存文件名打开

作者头像
Kindear
发布2020-10-19 12:29:14
4.8K1
发布2020-10-19 12:29:14
举报
小程序文件下载并写入存储并以非临时文件名打开

1.接口调整基础

盼星星,盼月亮,终于盼来了微信小程序SaveFile接口的调整,以前10M限制的时代一去不复返了。

以前超过10M的文件想要打开,只可以通过临时文件的方式,打开文件前需要判断文件大小,只有小于10M的文件才可以写入存储,以非临时文件的形式打开。

临时文件无法由开发者指定文件名称

2.文件上传注意事项

  1. 文件上传完成后必须记录上传文件的名称(或者自命名并记录)。
  2. 不可将文件以数据流的形式存储进入数据表中(分布式文件数据库可以)。

文件上传具体部分代码解析,请参见我的另一篇博客:https://cloud.tencent.com/developer/article/1588767

文末会附上上传的实现效果和对应代码开源地址。

3.文件下载

此部分包含三个功能点

  1. 文件写入系统存储
  2. 文件下载进度监听
  3. 清空文件缓存

此处以下载云存储中文件为例(非云存储代码文末附上地址)

文件下载和进度监听

代码语言:javascript
复制
downFile(e) {
    this.clv(); //清理缓存部分代码
    var fdetail = e.currentTarget.dataset.detail;
    var iscloud = this.data.cloud;
    var downloadTask = null;//下载进度监听器
      downloadTask = wx.cloud.downloadFile({
        fileID: fdetail.fileurl,
        success(res) {
          var finfo = wx.getFileInfo({
            filePath: res.tempFilePath,
            success: f => {
              wx.getFileSystemManager().saveFile({
                tempFilePath: res.tempFilePath,
                filePath: `${wx.env.USER_DATA_PATH}` + "/" + fdetail.filename,
              })
              wx.showModal({
                title: '是否打开文件',
                content: '',
                success(ans) {
                  if (ans.confirm) {
                    wx.openDocument({
                      filePath: wx.env.USER_DATA_PATH + "/" + fdetail.filename,
                    })
                  }
                }
              })
            }
          })

        }
      })
      downloadTask.onProgressUpdate((res) => {
        this.setData({
          jindu: res.progress
        })
      })
    

  },

文件缓存清理

代码语言:javascript
复制
clv() {
    wx.getSavedFileList({ // 获取文件列表
      success(res) {
        res.fileList.forEach((val, key) => { // 遍历文件列表里的数据
          // 删除存储的垃圾数据
          wx.removeSavedFile({
            filePath: val.filePath
          });
        })
      }
    })
  },

改部分代码可以写入saveFilefail回调中,并在该部分代码成功回调后,再次调用saveFile完成文件写入。

4.整体效果展示

参考 1.开源项目地址(代码):https://gitee.com/Kindear/yamako_procedure 2.微信社区更新公告:https://developers.weixin.qq.com/community/develop/doc/000e64a2010bd8da540bf44085e401

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小程序文件下载并写入存储并以非临时文件名打开
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档