收藏
回答

wx.saveImageToPhotosAlbum保存失败

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.saveImageToPhotosAlbum 微信iOS客户端 Android 6.67 2.20

- 当前 Bug 的表现(可附上截图)

wx.getSetting({
     success:(res)=>{
       if (!res.authSetting['scope.writePhotosAlbum']){
         console.log('没有获取授权');
         wx.authorize({
           scope: 'scope.writePhotosAlbum',
           success:(res)=>{
             console.log('获取授权')
             console.log('path = ' + _that.data.tempFilePath)
             wx.saveImageToPhotosAlbum({
               filePath: _that.data.tempFilePath,
               success: (res) => {
                 console.log('保存到相册');
                 console.log(res)
               },
               fail:(res)=>{
                 console.log('保存失败');
                 console.log(res)
               },
               complete:(res)=>{
                 console.log('调用完成')
               }
             })
           }
         })


不知道为什么就没有保存成功


回答关注问题邀请回答
收藏

3 个回答

  • 咸不辣
    咸不辣
    2020-11-26

    苹果系统将微信的照片访问权限关掉后也报这个错误

    2020-11-26
    有用
    回复
  • 水尤凼凼
    水尤凼凼
    2018-07-20

    这是缺少token,你请求的图片需要有token

    2018-07-20
    有用
    回复 3
    • 小鸡爪
      小鸡爪
      2018-07-20

      老哥,什么token啊,我这个是先用wx.canvasToTempFilePath把canvas保存图片返回一个临时文件路径,调用wx.saveImageToPhotosAlbum去保存这个图片,文档上也没说什么token呀


      2018-07-20
      回复
    • 水尤凼凼
      水尤凼凼
      2018-07-20回复小鸡爪

      canvasToTempFilePath 需要在draw方法里调用才能拿到图片,确认一下在哪调的

      2018-07-20
      回复
    • 小鸡爪
      小鸡爪
      2018-07-20回复水尤凼凼
      /**
       *
       * 生成图片
       *
       */
        saveImg(){
          const _that = this;
          console.log('save');
          wx.getImageInfo({
            src:"../../image/five_1.png",
            success:(res)=>{
              console.log('获取成功');
              console.log(res);
              //操作canvas
              const ctx = wx.createCanvasContext('shareCanvas');
              ctx.drawImage('../../'+res.path,0,0);
              ctx.draw(true,()=>{
                //将canvas保存为图片
                wx.canvasToTempFilePath({
                  canvasId: 'shareCanvas',
                  success: res => {
                    console.log('保存canvas为图片');
                    console.log(res);
                    _that.setData({
                      tempFilePath: res.tempFilePath
                    })
                  }
                })
              });
       
               
               
            }
          })
        },
        //保存到相册
        save(){
          const _that = this;
          //这里可以打印出返回的临时文件路径
          console.log(this.data);
          wx.getSetting({
            success:(res)=>{
              if (!res.authSetting['scope.writePhotosAlbum']){
                console.log('没有获取授权');
                wx.authorize({
                  scope: 'scope.writePhotosAlbum',
                  success:(res)=>{
                    console.log('获取授权')
                    console.log('path = ' + _that.data.tempFilePath)
                    wx.saveImageToPhotosAlbum({
                      filePath: _that.data.tempFilePath,
                      success: (res) => {
                        console.log('保存到相册');
                        console.log(res)
                      },
                      fail:(res)=>{
                        console.log('保存失败');
                        console.log(res)
                      },
                      complete:(res)=>{
                        console.log('调用完成')
                      }
                    })
                  }
                })
              }
            }
          })
          
        },


      2018-07-20
      回复
  • 灵芝
    灵芝
    2018-07-20

    你好,麻烦提供相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),方便定位问题

    2018-07-20
    有用
    回复 7
    • 小鸡爪
      小鸡爪
      2018-07-20

      wechatide://minicode/dzTIroma7orm

      2018-07-20
      回复
    • 灵芝
      灵芝
      2018-07-20回复小鸡爪

      你好,目前问题不复现,另外你的代码逻辑并没有处理用户已经授权的情况,请仔细检查代码

      2018-07-20
      回复
    • 小鸡爪
      小鸡爪
      2018-07-20回复灵芝

      不知道为什么代码片段里面wx.getSetting方法就调用不了,用户没有授权,获取授权之后也没能保存成功呐,我这是调用的方法有问题还是缺少什么参数呢?官方有没有什么案例可以给借鉴一下呢?

      console.log('获取授权')
                    console.log('path = ' + _that.data.tempFilePath)
                    wx.saveImageToPhotosAlbum({
                      filePath: _that.data.tempFilePath,
                      success: (res) => {
                        console.log('保存到相册');
                        console.log(res)
                      },
                      fail:(res)=>{
                        console.log('保存失败');
                        console.log(res)
                      },
                      complete:(res)=>{
                        console.log('调用完成')
                      }
                    })


      2018-07-20
      回复
    • 灵芝
      灵芝
      2018-07-20回复小鸡爪

      我这边真机和开发工具测试都是没有问题的喔,建议升级开发者工具到最新版本(https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

      2018-07-20
      回复
    • 狄希
      狄希
      2018-07-29回复小鸡爪

      你好,请问你的这个问题解决了吗?我这边也遇到相同的问题,getSetting显示已获取权限,图片也成功下载到临时路径,但是就是保存到相册时提示saveImageToPhotosAlbum:fail no permission


      2018-07-29
      回复
    查看更多(2)
登录 后发表内容