ios对小程序base64支持不太好,具体原因没有深入研究,反正挺坑的,解决方案为把base64转换为本地图片然后再引用即可。
代码方案如下:
前端代码片段:
<image mode="aspectFit " show-menu-by- longpress class="haibaoimg" src="{{ imgSrc }}" wx:if='{{ imgSrc.length>0 && imgtype =="2"}}'/>
js代码片段:
util.requestUrl({
url: '/spread/getMinaCode.e',
params: {
activityId: activityId,
prodOfferId: prodOfferId,
spreadFlag: spreadFlag,
pid: pid
}
}).then(res => {
wx.hideLoading();
if (res.resultCode = "getMinaCodeSuccess") {
var base64Data = res.resultObject.resultObject;
/// 通过微信小程序自带方法将base64转为二进制去除特殊符号,再转回base64
base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(base64Data.replace(/[\r\n]/g, "")));
/// 拼接请求头,data格式可以为image/png或者image/jpeg等,看需求
this.setData({
imgtype:res.resultObject.resultCode+''
});
// this.setData({
// imgSrc:'data:image/jpeg;base64,'+ base64Data
// });
const fs = wx.getFileSystemManager();
//定义路径名称
let codeimg = wx.env.USER_DATA_PATH + '/spreadHaibao.png';
//将base64图片写入
let that=this;
fs.writeFile({
filePath: codeimg,
data: base64Data,
encoding: 'base64',
success: (res) => {
//写入成功了的话,新的图片路径就能用了
console.log(res)
console.log(codeimg)
that.src2=codeimg;
that.setData({
imgSrc:codeimg
});
}
});
} else {
wx.showToast({
title: res.resultDesc || '请求出错',
icon: 'none',
duration: 2000,
mask: true
})
}
})