首先需要声明一点,base64格式的比较特殊,有时后台只能传输base64的图片,这种情况下,支付宝小程序downloadFile是不支持做保存图片到本地的,而微信小程序可以实现;
以下就来说说微信小程序实现保存base64图片的步骤:
downloadQR() {
const that = this;
wx.getSetting({ //获取权限
success(res) {
if (res.authSetting["scope.writePhotosAlbum"]) {
that.download(‘需要保存的base64码’);
} else {
wx.authorize({
scope: "scope.writePhotosAlbum",
success() {
that.download(‘需要保存的base64码’);
},
fail(err) {
console.log(err);
}
});
}
}
});
},
download(data) {
const fileManager = wx.getFileSystemManager();
const filePath =wx.env.USER_DATA_PATH +(this.data.serialNum ? "/lightId" + this.data.serialNum + ".png": "/lightIdQRCode.png");
//这块是定义图片的名称,可自定义其他
let self=this;
fileManager.writeFile({
filePath: filePath,
data: data.slice(22),
encoding: "base64",
success: res => {
wx.saveImageToPhotosAlbum({
filePath: filePath,
success: function (res) {
//保存成功
util.showToast(self.data.txt.saveSuccess);
},
fail: function (err) {
//保存失败
util.showToast(self.data.txt.saveFail);
console.log('downQrCode:',err);
}
});
},
fail: err => {
util.showToast(self.data.txt.saveFail);
console.log('downQrCode:',err);
}
});
},
小程序做保存图片这块,支付宝和微信有很大区别,如果同时有两端都要做这个功能,可能就得做兼容处理了,
微信小程序保存图片使用wx.saveImageToPhotosAlbum,官网明确说明到不支持网络路径;
image.png
而支付宝小程序my.saveImage则是只支持网络路径
image.png
image.png
同时做的时候也是挺为难的,需要与后端协调好