请问微信小程序这种pdf文件的保存,能单独加按钮点击保存吗?

作者站长头像
站长
· 阅读数 20

请问微信小程序这种pdf文件的保存,能单独加按钮点击保存吗?

而不是打开一个这种文件预览页面 点击下载保存,想在小程序加个下载按钮,直接保存pdf文件,而不是进入这种预览页面,然后还要点击右上角三个点去保存

回复
1个回答
avatar
test
2024-06-20

试试看 wx.saveFileToDisk 这个API?

这里是官方提供的一个Demo 👉 开发指引 / 对象存储 / 微信小程序 / 下载文件

async onLoad() {
    const result = await this.downloadFile('cloud://test.png',function(res){
      console.log(`下载进度:${res.progress}%,已下载${res.totalBytesWritten}B,共${res.totalBytesExpectedToWrite}B`)
      // if(res.progress > 50){ // 测试文件下载一半就终止下载
      //   return false
      // }
    })
    wx.saveFile({
      tempFilePath: result.tempFilePath
    }).then(console.log)
  },
  /**
   * 下载微信云托管对象存储到本地
   * @param {*} fileID 对象存储文件ID
   * @param {*} onCall 上传回调,文件上传过程监听,返回false时会中断上传
   */
  downloadFile(fileID, onCall = () => {}) {
    return new Promise((resolve, reject) => {
      const task = wx.cloud.downloadFile({
        fileID,
        success: res => resolve(res),
        fail: e => {
          const info = e.toString()
          if (info.indexOf('abort') != -1) {
            reject(new Error('【文件下载失败】中断下载'))
          } else {
            reject(new Error('【文件下载失败】网络或其他错误'))
          }
        }
      })
      task.onProgressUpdate((res) => {
        if (onCall(res) == false) {
          task.abort()
        }
      })
    })
  }
})
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容