微信小程序saveFile:fail the maximum size of the file storage limit is exceeded的解决办法
小程序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方法进行存储。
版权声明
本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。
评论