微信小程序 — 保存文件到本地

文章目录

    • wx.saveFile(Object object)
    • FileSystemManager.saveFile(Object object)
    • 下载文件至本地,并打开文档

wx.saveFile(Object object)

saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用,本地文件存储的大小限制为 10M

wx.chooseImage({
  success: function(res) {
    const tempFilePaths = res.tempFilePaths
    wx.saveFile({
      tempFilePath: tempFilePaths[0],
      success (res) {
        const savedFilePath = res.savedFilePath
      }
    })
  }
})
 

FileSystemManager.saveFile(Object object)

保存临时文件到本地。此接口会移动临时文件,因此调用成功后,tempFilePath 将不可用。
此方法存储可以自己定义目录,可以实现需要分账号角色存储的功能。

  /* 保存图片 */
  save_photo: function () {
    const fs = wx.getFileSystemManager()
    var isExist = false; //目录是否存在
    var that = this;
    // 同步接口
    try {
      fs.accessSync(`${wx.env.USER_DATA_PATH}/photoinvoice/1553115`)
      isExist = true;
    } catch (e) {
      // console.error(e)
    }
    if (isExist != true) {
      // 同步接口,创建目录
      try {
        fs.mkdirSync(`${wx.env.USER_DATA_PATH}/photoinvoice/1553115`, true)
      } catch (e) {
        console.error(e)
      }
    }
    // console.log(`${wx.env.USER_DATA_PATH}/photoinvoice/1553114`)
    console.log(that.data.src)
 
 
    wx.getImageInfo({
      src: this.data.src,
      success: function (res) {
        var path = res.path;
        console.log("path:" + path) //wxfile://te6786958409efjje46546i5.jpg
        //下面获取图片名te6786958409efjje46546i5.jpg
        var startPos = path.lastIndexOf("//");
        console.log(startPos)
        var picName = path.slice(startPos + 2, path.length); //加2是为了从//后面截取。所以+2,把//过滤掉
        console.log(picName)
        fs.saveFile({
          tempFilePath: path,
          filePath: `${wx.env.USER_DATA_PATH}/photoinvoice/1553115/${picName}`, //保存的时候必须跟上路径和文件名
          success: function (res) {
            console.log("保存成功")
            console.log(res)
          },
          fail: function (res) {
            console.log("保存失败")
            console.log(res)
          }
        })
 
      }
    })
  },

下载文件至本地,并打开文档

downloadfile(e){
    var url = e.currentTarget.dataset.url;
    //下载文件,生成临时地址
    wx.downloadFile({
      url: url, 
      success(res) {
        // console.log(res)
        //保存到本地
        wx.saveFile({
          tempFilePath: res.tempFilePath,
          success: function (res) {
            const savedFilePath = res.savedFilePath;
            // 打开文件
            wx.openDocument({
              filePath: savedFilePath,
              success: function (res) {
                console.log('打开文档成功')
              },
            });
          },
          fail: function (err) {
            console.log('保存失败:', err)
          }
        });
      }
    })
  },

你可能感兴趣的:(小程序,JavaScript,前端,微信小程序)