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

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

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

解决思路:

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

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昌子玩前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值