收藏
回答

wx.saveImageToPhotosAlbum保存失败

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
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('调用完成')
               }
             })
           }
         })


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


最后一次编辑于  2018-07-20  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-灵芝
    社区技术运营专员-灵芝
    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)
  • 李国帅
    李国帅
    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
      回复