需要先向用户申请保存图片的权限,然后下载图片
看小程序代码
/**
* 获取保存图片到相册的授权
* @param {*} e
*/
downloadImgAuth: function(e){
const that=this;
that.setData({
downloadImgAuthFlag:false
})
// 获取保存到相册授权信息,如果获得授权则保存图片
wx.getSetting({
success(res) {
console.log(res);
// 如果从未申请保存到相册权限,则申请权限
if (res.authSetting['scope.writePhotosAlbum'] == null) {
//申请权限
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// 用户已经同意
console.log("success");
that.downloadImg();
},
fail() {
// 用户不同意
console.log("fail");
wx.showToast({
title: '获取权限失败,请再次点击按钮并授权保存到相册',
icon: 'none',
duration: 2000
});
}
})
}
// 如果已经有权限,就下载图片
else if (res.authSetting['scope.writePhotosAlbum'] == true) {
that.downloadImg();
}
// 被拒绝过授权,重新申请
else {
console.log("auth");
//打开权限页面
wx.openSetting({
fail: function () {}
})
}
}
});
},
/**
* 下载图片
* @param {*} e
*/
downloadImg: function(e){
const that=this;
let fileName = new Date().valueOf();//用时间戳作为图片名称
const cyhUserInfo = wx.getStorageSync('cyhUserInfo'); //获取缓存
//触发函数
wx.downloadFile({
/* url 为要下载的文件链接 */
url: getPhotoUrl,
/* filePath指定文件下载后存储的路径,wx.env.USER_DATA_PATH */
filePath:wx.env.USER_DATA_PATH+'/'+fileName+'share.png',
//成功后的回调函数
success: function (res) {
console.log(res);
that.setData({
downloadImgAuthFlag:downloadImgAuthFlag
})
// 如果返回的不是文件流,则提示失败,不保存文件
if(res.header['Content-Type']!="application/octet-stream;charset=UTF-8"){
wx.showToast({
title: '生成图片失败',
icon: 'none',
duration: 2000
})
return;
}
let filePath = res.filePath;
//保存到本地
wx.saveImageToPhotosAlbum({
filePath,
success(res) {
console.log("保存图片成功");
}
})
},
fail:function(err){
console.log(err);
that.setData({
downloadImgAuthFlag:downloadImgAuthFlag
})
wx.showToast({
title: '生成图片失败',
icon: 'none',
duration: 2000
})
}
});
},