zoukankan      html  css  js  c++  java
  • 微信小程序保存图片没有权限跳到授权页面

    保存图片

    方法一:wx.downloadFile + wx.canvasToTempFilePath +
    wx.saveImageToPhotosAlbum;
    方法二:wx.getImageInfo +
    wx.canvasToTempFilePath + wx.saveImageToPhotosAlbum

    wx.downloadFile:下载文件资源到本地,仅支持https的链接地址。成功的回调函数会返回一个临时的文件地址,即:res.tempFilePath。更多参数见官方文档DownloadTask wx.downloadFile(Object object);
    wx.getImageInfo:获取图片信息,成功的回调函数中会图片的本地路径,即:res.path。更多参数见官方文档wx.getImageInfo(Object object);
    wx.canvasToTempFilePath:把当前画布指定区域的内容导出生成指定大小的图片。成功的回调中会返回图片的临时地址,即:res.tempFilePath。更多参数见官方文档wx.canvasToTempFilePath(Object object, Object this;
    wx.saveImageToPhotosAlbum:保存上一步的图片到系统相册,成功时会直接保存图片到相册中。更多参数见官方文档wx.saveImageToPhotosAlbum(Object object)

    当用户点击上面的保存海报按钮后,若用户是第一次使用,此时会有一个弹窗提醒用户授权。如果用户点击了拒绝,无论再怎么点保存海报的按钮(清空缓存可绕过),都不会有弹窗提醒且会直接进入fail中,所以必须要调用wx.getSetting这个API,判断res.authSetting的授权结果中是否有scope.writePhotosAlbum。有且值为true则表示同意保存到相册,否则就要再次提醒用户开启权限。

    //保存二维码
      qrcodesaveimg(){
        var that = this
        Promise.all([that.downLoadImage(that.data.posterInfo.qrcode)]).then((res)=>{
          console.log(that.data,"图片路径",res[0])
          let imgurl = res[0]
          wx.getSetting({
            success (res) {
              console.log(res.authSetting['scope.writePhotosAlbum'],res)
              if(res.authSetting['scope.writePhotosAlbum'] ||res.authSetting['scope.writePhotosAlbum']==undefined){
                console.log("1111",res[0])
                wx.saveImageToPhotosAlbum({
                  filePath: imgurl,
                  success: (e) => {
                    wx.showToast({
                      title: '保存成功',
                      duration: 2000
                    });
                  }, fail: (e) => {
                    console.log("失败",e)
                  }
                })
              }else{
                wx.openSetting({
                  success(res) {}
                })
              }
            }
          })
        })
      },
    //下载图片返回本地连接
    downLoadImage(url) {
        return new Promise((resolve, reject) => {
          wx.downloadFile({
            url: url,
            success: (res) => {
              if (res.statusCode === 200) {
                resolve(res.tempFilePath)
              }
            }
          });
        })
      },

     

  • 相关阅读:
    分析SIX锁和锁分区导致的死锁
    导数中的最小化日志记录:测试和分析
    导数中的最小化日志记录:背景和理论
    Redis学习笔记(十一) 服务器
    Redis学习笔记(十) 客户端
    Redis学习笔记(九) AOF持久化
    Redis学习笔记(八) RDB持久化
    Redis学习笔记(七) 数据库
    Redis学习笔记(六) 对象
    Redis学习笔记(五) 压缩列表
  • 原文地址:https://www.cnblogs.com/xiaohuohuai/p/14790440.html
Copyright © 2011-2022 走看看