再网上找了小程序如何保存多张图片的方法,方法是for循环,配合使用回调函数callback,没有领悟到精髓,于是换了一种方式去实现,手机测试可以依次保存全部的图片。
思路:
使用wx.downloadFile()获取图片临时路径,wx.saveImageToPhotosAlbum()将改临时路径保存到手机相册。如果保存成功,就i++调用dow_temp(i++),如果失败就继续dow_temp(i),来重新执行一遍。
代码实现:
//分享功能复制文案,保存图片到相册,成功后开启分享浮层
share:function(e){
var that = this;
var data = that.data.goods.goodsPhotoUrls;
var sharetext = e.currentTarget.dataset.text;
that.setData({
sharetext: sharetext
})
wx.showLoading({
title: '图片下载中..',
})
var all_n = data.length;
that.dow_temp(0);
},
//下载单个内容
dow_temp: function (i, callback) {
var that = this;
var data = that.data.goods.goodsPhotoUrls;
var all_n = data.length;
if (i < all_n) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// 用户已经同意小程序使用相册的授权
const downloadTask = wx.downloadFile({
url: data[i],
success: function (res) {
var temp = res.tempFilePath;
console.info("临时路径", temp)
wx.saveImageToPhotosAlbum({
filePath: temp,
success: function () {
console.info('第',(i + 1),'张保存成功');
that.dow_temp(i+1);
//开启分享浮层
if (i == all_n-1) {
wx.setClipboardData({
data: that.data.sharetext,
success(res) {
that.setData({
shareMaskStatus: 'show'
})
}
})
}
},
fail: function () {
console.info('第', (i + 1), '张保存失败');
that.dow_temp(i);
}
})
},
fail: function (res) {
wx.showToast({
icon: 'none',
title: '获取图片临时路径失败',
})
}
})
},
fail: function () {
wx.showToast({
icon: 'none',
title: '获取授权失败',
})
}
})
}
},