原理:在小程序中先要下载到图片,在打开本地相册后保存图片。
注意:在小程序后台填写request合法域名和downloadFile合法域名(因为运用到了下载图片接口)
前端代码如下(非原创):
1 /** 2 * 下载图标到相册 3 */ 4 saveToPhone:function(e){ 5 //获取相册授权 6 let imgSrc = this.data.qrcode_img //要保存的图片url 7 console.log(imgSrc) 8 wx.showLoading({ 9 title: ‘保存中...‘ 10 }) 11 wx.downloadFile({ //下载文件资源到本地 12 url: imgSrc, 13 success: function (res) { 14 console.log(res); 15 //图片保存到本地 16 wx.saveImageToPhotosAlbum({ 17 filePath: res.tempFilePath, 18 success: function (data) { 19 console.log(data) 20 wx.hideLoading() 21 wx.showToast({ 22 title: ‘保存成功‘, 23 icon: ‘success‘, 24 duration: 2000 25 }) 26 }, 27 fail: function (err) { 28 console.log(err); 29 // $yjpToast.show({ 30 // text: `保存失败` 31 // }) 32 if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail:auth denied") { 33 console.log("当初用户拒绝,再次发起授权") 34 wx.showModal({ 35 title: ‘提示‘, 36 content: ‘需要您授权保存相册‘, 37 showCancel: false, 38 success: modalSuccess => { 39 wx.openSetting({ 40 success(settingdata) { 41 console.log("settingdata", settingdata) 42 if (settingdata.authSetting[‘scope.writePhotosAlbum‘]) { 43 wx.showModal({ 44 title: ‘提示‘, 45 content: ‘获取权限成功,再次点击图片即可保存‘, 46 showCancel: false, 47 }) 48 } else { 49 wx.showModal({ 50 title: ‘提示‘, 51 content: ‘获取权限失败,将无法保存到相册哦~‘, 52 showCancel: false, 53 }) 54 } 55 }, 56 fail(failData) { 57 console.log("failData", failData) 58 }, 59 complete(finishData) { 60 console.log("finishData", finishData) 61 } 62 }) 63 } 64 }) 65 } 66 }, 67 complete(res) { 68 console.log(res); 69 wx.hideLoading() 70 } 71 }) 72 } 73 }) 74 },