小程序ios报错 canvasToTempFilePath:fail invalid viewId的解决办法

文章讲述了在微信小程序中使用Canvas绘制图片后,iOS环境下调用`wx.canvasToTempFilePath`失败的问题,提出通过Canvas.toDataURL转换为Base64并存储到本地临时路径,以及后续清理临时文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:

用canvas画好图片之后,调用wx.canvasToTempFilePath,开发工具和安卓机正常,ios报错canvasToTempFilePath:fail invalid viewId

解决:

1、调用Canvas.toDataURL先转成base64
2、将base64转成本地临时路劲

 let base64 = canvas.toDataURL();
  const time = new Date().getTime();
  const imgPath = wx.env.USER_DATA_PATH + "/poster" + time + "share" + ".png";
  //如果图片字符串不含要清空的前缀,可以不执行下行代码.
  const imageData = base64.replace(/^data:image\/\w+;base64,/, "");
  const fs = wx.getFileSystemManager();
  fs.writeFileSync(imgPath, imageData, "base64");
  fs.close()
  // imgPath 就是临时路劲

注意

调用fs.writeFileSync后一定记得用 fs.unlink删掉,或者读取全部文件删掉

 const fs = wx.getFileSystemManager()

  const basepath = `${wx.env.USER_DATA_PATH}`

  fs.readdir({

    dirPath: basepath,/// 获取文件列表

    success(res) {
      console.log('全部临时文件')
      console.log(res)

      res.files.forEach((val) => { // 遍历文件列表里的数据
        fs.unlink({
          filePath: basepath + '/' + val
        });
      })

    },
    fail(err) {
      console.log('读取失败')
      console.log(err)

    }

  })
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值