微信小程序saveFile:fail the maximum size of the file storage limit is exceeded的解决办法

来源:网络 文章列表 2019-03-24 8
小程序saveFile,fail the maximum size of the file storage limit is exceeded的解决办法

问题描述:

最近在做微信小程序开发的时候,有一个在线拍照上传的功能要做。原本好好的功能,调试代码几次后发现,拍照上传功能失效了。经过不断的排查发现,原来是小程序的本地存储满了。

报错信息如下:

saveFile:fail the maximum size of the file storage limit is exceeded

代码如下:

wx.saveFile({
  tempFilePath: t.tempFilePath,
  success: function(t) {
   console.log('临时', t.tempFilePath, t.savedFilePath)
   e.fire("CardPhoto", t.savedFilePath)
   wx.navigateBack();
  },
  fail (e) {
   console.log('拍照保存失败', e)
  }
});

微信文档中描述的是 本地文件存储的大小限制为 10M

那么既然只能存10M,那么我们解决这个问题的思路,就是看下存了那些数据,是否可以删除。我这个项目每次都只存一张照片,那么居然也蛮,说明不是单个文件有10M,还是有多个文件存储,没有删除旧数据。

我们打印出fail里的e,可以看到

fileList里有多个文件。这些文件加起来超过10M,当然我上图的是刚刚添加的测试文件,原先的是有20几条数据,所以加起来就超过了10M了,导致无法再上传成功。

解决方案

我的案例里是每次只保存一个文件,这些久文件其实都是垃圾数据,没有被清空。所以我只需要把这些垃圾数据清除掉,然后每次添加新数据就行。

微信里有个wx.getSavedFileList,可以得到小程序本地存储的文件列表,再通过小程序文件api(wx.removeSavedFile)将垃圾文件删除即可。

具体代码如下:

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

删除完成后,我们在进行wx.saveFile api方法进行存储。

 

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论

友情链接