小程序:
思路:向用户发起授权请求,再保存到本地。如果没有授权就打开设置选项让用户重新授权
参考地址:https://blog.csdn.net/weixin_47209386/article/details/120429464
uni.authorize({
/* scope.writePhotosAlbum 类型是保存到相册 */
scope: 'scope.writePhotosAlbum',
success() {
/* 已授权进入 */
/* 保存图片到相册方法方法 */
/* 获取图片的信息 */
uni.getImageInfo({
src:this.imgUrl,
success: function(image) {
/* 保存图片到手机相册 */
uni.saveImageToPhotosAlbum({
filePath: image.path,
success: function() {
uni.showModal({
title: '保存成功',
content: '图片已成功保存到相册',
showCancel: false
});
},
complete(res) {
console.log(res);
}
});
},
fail: function(image){
console.log(this.imageUrl);
}
});
},
complete(res) {
/* 判断如果没有授权就打开设置选项让用户重新授权 */
uni.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
/* 打开设置的方法 */
uni.showModal({
content: '没有授权保存图片到相册,点击确定去允许授权',
success: function(res) {
if (res.confirm) {
/* 打开设置的API*/
uni.openSetting({
success(res) {
console.log(res.authSetting);
}
});
} else if (res.cancel) {
uni.showModal({
cancelText: '取消',
confirmText: '重新授权',
content: '你点击了取消,将无法进行保存操作',
success: function(res) {
if (res.confirm) {
uni.openSetting({
success(
res) {
/* 授权成功 */
console
.log(
res
.authSetting
);
}
});
} else if (res.cancel) {
console.log('用户不授权');
}
}
});
}
}
});
}
}
});
}
})
H5:
uni.saveImageToPhotosAlbum不支持H5,因此不能用这个方法
思路:利用a标签的dowload下载图片
参考地址:https://blog.csdn.net/weixin_50606255/article/details/119609867
var oA = document.createElement("a"); // 创建一个a标签
// 正则表达式,这里是把图片文件名分离出来。拿到文件名赋到a.download,作为文件名来使用文本 ,
// a的download 谷歌浏览器必须同源才能强制下载,否则跳转到图片地址
oA.download = this.imgUrl.replace(/(.*\/)*([^.]+.*)/ig,"$2").split("?")[0]; ; // 设置下载的文件名,默认是'下载'
oA.href = this.imgUrl;
document.body.appendChild(oA);
oA.click();
oA.remove(); // 下载之后把创建的元素删除