微信小程序> 微信小程序之保存图片之相册:saveImageToPhotosAlbum、downloadFile、授权问题

微信小程序之保存图片之相册:saveImageToPhotosAlbum、downloadFile、授权问题

浏览量:4357 时间: 来源:昌子的前端之路

看过很多文档,解决方案都是高度的一致,但是代码贴上去就是不行....

好吧,只能一步步解析代码看哪里出了问题。

解决思路:

1.wx.downloadFile下载图片

2.wx.openSetting授权

3.wx.saveImageToPhotosAlbum图片保存到本地

 

问题点:

1.wx.saveImageToPhotosAlbum的报错信息,真机跟调试机上会出现不一致...官方文档上也没找到全面的,下面列出真机跟调试都出现的报错信息

err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail authorize no response"

2.一步步下来都是ok 的,到了用户授权这一步大部分代码都是没反应,细心观察了下,授权是需要弹窗支持的....orz

解决方案:将授权方法wx.openSetting写入wx.showModal里

wx.showModal({  title: '提示',  content: '需要您授权保存相册',  showCancel: false,  success: modalSuccess => {    wx.openSetting({      success(settingdata) {        console.log("settingdata", settingdata)      },      fail(failData) {        console.log("failData", failData)      },      complete(finishData) {        console.log("finishData", finishData)      }    })  }})

 

 

完整代码:

wx.downloadFile({      url: e.currentTarget.dataset.src,//图片地址      success: function (res) {        //图片保存到本地        wx.saveImageToPhotosAlbum({          filePath: res.tempFilePath,          success: function (data) {            wx.hideLoading()            wx.showModal({              title: '提示',              content: '您的二维码已保存到相册,赶快识别二维码添加小易进行咨询吧',              showCancel: false,            })          },          fail: function (err) {            if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail authorize no response") {              // 这边微信做过调整,必须要在按钮中触发,因此需要在弹框回调中进行调用              wx.showModal({                title: '提示',                content: '需要您授权保存相册',                showCancel: false,                success: modalSuccess => {                  wx.openSetting({                    success(settingdata) {                      console.log("settingdata", settingdata)                      if (settingdata.authSetting['scope.writePhotosAlbum']) {                        wx.showModal({                          title: '提示',                          content: '获取权限成功,再次点击图片即可保存',                          showCancel: false,                        })                      } else {                        wx.showModal({                          title: '提示',                          content: '获取权限失败,将无法保存到相册哦~',                          showCancel: false,                        })                      }                    },                    fail(failData) {                      console.log("failData", failData)                    },                    complete(finishData) {                      console.log("finishData", finishData)                    }                  })                }              })            }          },          complete(res) {            wx.hideLoading()          }        })      }    })

好了,授权有了,授权后保存图片ok,大功告成。

参考文献https://www.jianshu.com/p/77b8d520ba3f

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎