writeFile:fail base64 encode error ios

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,
})
},
})
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇怪的农民

你打赏的是无话不说

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值