小程序保存图片到本地

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
saveTap: function(){
  var self =this
  wx.getSetting({
    success(res) {
      console.log(res)
      //判断是否已授权
      if (!res.authSetting['scope.writePhotosAlbum']) {
        wx.authorize({
          scope: 'scope.writePhotosAlbum',
          success() {
            //授权成功
            self.savePhoto()
          },
          fail : function(){
            //未授权
            self.imageErrorAuth()
          }
        })
      }else{
        //已授权直接保存图片
        self.savePhoto()
      }
    },
     
     
  })
},

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
imageErrorAuth() {
    //打开设置必须在按钮点击事件中所以搞一个modal
    wx.showModal({
      title: '提示',
      content: '需要您授权保存至相册',
      showCancel: false,
      success: modalSuccess => {
        wx.openSetting({
          success(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)
          }
        })
      }
    })
  },

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
savePhoto: function(){
    var imgSrc = app.globalData.httpHeader+'qr_code.png'
    wx.downloadFile({
      url: imgSrc,
      success: function (res) {
        //图片保存到本地
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success: function (data) {
            console.log('保存成功')
            wx.showToast({
              title: '保存成功',
              icon: 'success',
              duration: 2000
            })
          },
          fail: function (err) {
            console.log('保存失败');
            console.log(err)
            if (err.errMsg == "saveImageToPhotosAlbum:fail auth deny") {
              //在这种逻辑下这种错误不会出现
              console.log("未授权")
   
            } else if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel'){
              //用户点击了取消
              console.log('用户点击了取消')
            }
          },
          complete(res) {
            //结束回调
          }
        })
      }
    })
  },

  代码注释很清晰了

posted @   小师傅啊小师傅  阅读(1074)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
点击右上角即可分享
微信分享提示