收藏
回答

wx.getFileSystemManager().unlink()无法删除临时文件?

使用场景:每个产品都有不同的小程序码,需要把不同的小程序码用canvas画出来生成海报进行下载

使用步骤:

1.把获取到的base64格式的小程序码用wx.getFileSystemManager().writeFile写入本地;

2.canvas画出写入本地的小程序二维码;

3.用wx.getFileSystemManager().unlink()删除之前写入的本地文件;

问题:

发现无法删除,每次canvas画出来的小程序码都是第一次写入的;

代码片段:

1.

2.canvas绘制

3.绘制成功后删除,控制台输出删除成功

4.重复上述步骤,但小程序二维码是重新获取的,与之前的不一样

5.第二次绘制的小程序二维码内容是第一次的,并不是最新的

回答关注问题邀请回答
收藏

2 个回答

  • MK🌈小仙女
    MK🌈小仙女
    06-11

    问题已解决,换一种实现方式。后端把拿到的每个小程序码存到数据库,前端画海报的时候用后端给的图片地址,这样保证每个小程序码都是最新的,前端无需做写入文件,直接下载画好的海报即可

    06-11
    有用 1
    回复
  • momo
    momo
    06-07

    使用了writeFile写入本地了应该就不属于临时文件了,直接使用临时路径去绘制canvas就可以了不需要使用writeFile下载,你就不用删除了

    06-07
    有用
    回复 17
    • MK🌈小仙女
      MK🌈小仙女
      06-07
      后半句读不通,我的问题是如果不删,下一次绘制的二维码依然是上一次的,所以想删掉,但是删不掉
      06-07
      回复
    • momo
      momo
      06-07回复MK🌈小仙女
      首先这个图片是本地图片是吧
      06-07
      回复
    • momo
      momo
      06-07回复MK🌈小仙女
      可以打印一下wx.env.USER_DATA_PATH看看是不是有值,如果是undefined 可能是因为您在非微信小程序环境中运行,或者微信开发者工具的版本过低
      06-07
      回复
    • MK🌈小仙女
      MK🌈小仙女
      06-07
      有值的,否则第一次不会成功,问题在于第二次获取别的二维码画出来再下载,二维码的内容是上一次二维码的
      06-07
      回复
    • momo
      momo
      06-07回复MK🌈小仙女
      你可以这样试试,初步判定:可能是每次保存的文件名字一样,缓存造成的,你写一个全局变量默认为空,每次接口成功回调那里赋值:保存文件的名称:wx.env.USER_DATA_PATH + new Date().getTime() + ‘/ERWEIME.png’,后面画图和删除文件都使用这个变量,这是排除法,看看是不是名字一样缓存问题
      06-07
      回复
    查看更多(12)
登录 后发表内容