小程序多张图片下载问题

再网上找了小程序如何保存多张图片的方法,方法是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: '获取授权失败',

})

}

})

}

},

猜你喜欢

转载自blog.csdn.net/u012011360/article/details/88417286