writeFile:fail base64 encode error 这是微信官方的bug,今天遇到了,说一下我的解决方案
wx.getFileSystemManager().writeFile可以保存图片到本地,当数据类型传入的是base64时,在ios端,微信的writeFile api部分会解码失败,此时只需要把传入的数据类型从base64改为binary(二进制格式),构造出图片本地临时路径即可.代码如下:
// base64图片转为本地缓存
base64ToBuffer(base64data, calback) {
const [, format, bodyData] = /data:image/(\w+);base64,(.*)/.exec(base64data) || [];
if (!format) {
return new Error(‘ERROR_BASE64SRC_PARSE’);
}
let FILE_BASE_NAME = new Date().getTime();
const filePath = ${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}
;
const buffer = wx.base64ToArrayBuffer(bodyData);
const fsm = wx.getFileSystemManager();
fsm.writeFile({
filePath,
data: buffer,
encoding: ‘binary’,
success() {
calback(filePath);
},
fail() {
calback(base64data); // return (new Error(‘ERROR_BASE64SRC_WRITE’));
}
});
},
调用时使用 如下:
app.base64ToBuffer(‘data:image/png;base64,’+image, function (localUrl) {
wx.saveImageToPhotosAlbum({
filePath: localUrl,
success: function (res2) {
wx.showToast({
title: ‘保存成功’,
icon: ‘none’,
duration: 2000,
})
},
fail: function (err) {
wx.showToast({
title: ‘保存失败’,
icon: ‘none’,
duration: 2000,
})
},
})
});
writeFile:fail base64 encode error ios
最新推荐文章于 2023-12-12 09:32:08 发布