微信小程序下载图片的坑(包括获取保存图片的权限)

一、一定要指定文件本地存储路径(不管图片还是文件),否则安卓机保存图片会一直失败,主要原因是微信临时路径带了.unkown后缀,而苹果机不会,

具体路径如下

( filePath:  wx.env.USER_DATA_PATH+ '/' + title.replace('/', '_') + '.png',)

二、然后wx.authorize的弹窗在拉起一次拒绝申请之后就不会再触发,则需要进行权限判断去wx.openSetting跳转去设置,设置里面只会出现请求过的权限,只有允许访问保存图片功能才能成功调用 wx.saveImageToPhotosAlbum

三、如果还是不成功,尝试一下让后端返回的response的content-type为'application/png',

具体代码如下:

 wx.getSetting({
      success(res: any) {
        if (res.authSetting['scope.writePhotosAlbum'] === false) {
          wx.showModal({
            title: '权限申请',
            content: '为保证你正常使用该功能,请前往系统设置开启图片保存相关权限。',
            confirmText: "去设置",
            confirmColor: '#3693EF',
            success(modalres: any) {
              if (modalres.confirm) {
                wx.openSetting({
                  success(settingdata) {
                    console.log(settingdata)
                    if (settingdata.authSetting["scope.writePhotosAlbum"]) {
                      console.log("获取权限成功,再次点击图片保存到相册")
                    } else {
                      console.log("获取权限失败")
                    }
                  }
                })
              }
            }
          })
        }
        else {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success() {
                  let filePath = wx.env.USER_DATA_PATH
                  wx.downloadFile({
                    url: 获取资源的请求,
                    filePath: filePath + '/' + title.replace('/', '_') + '.png',
                    header: {
                      'accessToken': wx.getStorageSync('STORAGE_SESSION_KEY') || '',
                      'content-type': 'application/png',
                    },
                    success(ret) {
                      console.log(ret);
                      if (ret.statusCode === 200) {
                        wx.saveImageToPhotosAlbum({
                          filePath: ret.filePath,
                          success: function () {
                            wx.showToast({
                              title: '保存成功,请前往系统相册查看',
                              icon: 'success',
                              duration: 2000
                            });
                          },
                          fail: function (ren) {
                            wx.showToast({
                              title: '图片保存失败',
                              icon: 'error',
                              duration: 2000
                            });
                          }
                        })
                      }
                    },
                    fail: function () {
                      wx.showToast({
                        title: '图片保存失败',
                        icon: 'error',
                        duration: 2000
                      });
                    },
                    complete: () => {
                      wx.hideLoading()
                    }
                  })
                
            }
          })
        }
      }
    })
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值