收藏
回答

wx.saveImageToPhotosAlbum 保存图片失败

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.saveImageToPhotosAlbum 客户端 7.0.2 2.5.0

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

 代码走到wx.saveImageToPhotosAlbum 没任何反应,


- 预期表现


- 复现路径


- 提供一个最简复现 Demo

//下载图片

share: function () {

let that = this;

wx.canvasToTempFilePath({

canvasId: 'myCanvas',

success: function (res) {

console.log(res.tempFilePath)

that.setData({

tempFilePath: res.tempFilePath

})

wx.saveImageToPhotosAlbum({

filePath: res.tempFilePath,

success: function success(res) {

wx.showModal({

title: '成功保存图片',

content: '已成功为您保存图片到手机相册,请自行前往朋友圈分享',

success: function () {

that.setData({

friendTrue:false

})

}

})

},

fail: function fail(e) {

wx.getSetting({

success: (res) => {

console.log(res);

console.log(res.authSetting['scope.writePhotosAlbum']);

if (res.authSetting['scope.writePhotosAlbum'] == false) {

wx.openSetting({

success: (res) => {

console.log(res);

}

})

}

}

})

}

});

}

})

},



这个问题目前再iphone5.6.有问题, 我的手机是iPhone8就没有问题,再另外一个iphone8就有问题,不知道为啥,这段代码以前没有问题,最近才出现问题,不知道为啥,我一直没有动过

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

4 个回答

  • 社区技术运营专员-灵芝
    社区技术运营专员-灵芝
    01-21

    麻烦提供出现问题的机型和微信版本,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    01-21
    赞同
    回复 6
    • 杨梅子
      杨梅子
      01-22

      https://developers.weixin.qq.com/s/EdMB8BmK7O50   这个是链接你看一下吧,  目前再iPhone8手机上能看到


      01-22
      回复
    • 社区技术运营专员-灵芝
      社区技术运营专员-灵芝
      01-22回复杨梅子

      这边测试没有复现问题,麻烦真机打开调试--vconsole--system截图看看

      01-22
      回复
    • 杨梅子
      杨梅子
      01-22

      你好,问一下,你这测试是在手机测试,还是在开发工具测试的? https://developers.weixin.qq.com/s/fa24nCmX795K  这个是新的代码片段,  我做的测试是在开发工具里可以,在手机不行

      01-22
      回复
    • 杨梅子
      杨梅子
      01-22回复社区技术运营专员-灵芝

      这是截图

      01-22
      回复
    • 社区技术运营专员-灵芝
      社区技术运营专员-灵芝
      01-22回复杨梅子

      这边测试没有复现问题,是真机测试的,确认是否有开启保存到相册的权限呢?

      01-22
      回复
    查看更多(1)
  • 張張張張張臻
    張張張張張臻
    01-31

    用我的解决方法,代码如下


    // 绑定tap点击事件

    submit(){

        this.getAuth('scope.writePhotosAlbum')
            .then(() => {

                // 在这里处理接下里的流程


            }, ()=>{
               console.log('请开启保存到相册权限');
            })
    }



    // 小程序校验权限

    getAuth(key){
        return new Promise((resolve, reject)=>{
            if(!ctx.isXCX){
                return resolve();
            }
     
            wx.getSetting({
                success(auth) {
                    // 用户授权过
                    if (auth.authSetting.hasOwnProperty(key)) {
                        // 拒绝
                        if(!auth.authSetting[key]){
                            wx.openSetting({
                                success: res => {
                                    // 用户开启
                                    if (res.authSetting[key]) {
                                        resolve();
                                    } else {
                                        reject();
                                    }
                                },
                                fail() {
                                    reject();
                                }
                            })
                        } else {
                            // 成功授权
                            resolve();
                        }
                    } else {
                        // 用户一次都没有授权过
                        wx.authorize({
                            scope: key,
                            success(res) {
                                // 成功授权
                                resolve();
                            },
                            fail() {
                                // 拒绝授权
                                reject();
                            }
                        })
                    }
                }
            })
        })
    },



    01-31
    赞同
    回复
  • 六点水的凹凸曼
    六点水的凹凸曼
    01-24

    老哥,你现在点击保存,拒绝授权以后,再点击会opensetting吗?

    01-24
    赞同
    回复 8
    • 杨梅子
      杨梅子
      01-24

       

       https://www.cnblogs.com/xuzhengzong/p/7715810.html   你看一下这个网址,里面写的是地位位置,原理都一样,我是参考这个写的


      01-24
      回复
    • 六点水的凹凸曼
      六点水的凹凸曼
      01-24回复杨梅子

      我之前是判断返回信息是不是用户拒绝授权,是的话就opensetting,之前都好用的突然不触发了。刚才改成了判断authsetting,就上面那段,也没触发,我想知道你那个现在能触发不?

      01-24
      回复
    • 六点水的凹凸曼
      六点水的凹凸曼
      01-24回复杨梅子

      我在想是不是现在只能通过button来绑定opensetting事件了?

      01-24
      回复
    • 杨梅子
      杨梅子
      01-24

      你如果同意保存图片的话,出错吗? 方便看一下你代码吗?(我之前是重新删了小程序,没有弹出那个允许保存图片的框,然后点击按钮没有反应)建议你把开发者工具更新到最新

      01-24
      回复
    • 六点水的凹凸曼
      六点水的凹凸曼
      01-24回复杨梅子

      同意的话没有问题,就是不同意之后再点击不会弹框也不会跳去权限设置页。刚才看了那个通知下面的评论,好像写在回调里的opensetting也是不会生效的。

      01-24
      回复
    查看更多(3)
  • live
    live
    01-22

    老哥,问题解决了没有?我的也是这样,之前好好的,现在走到保存那直接就跳过了;授权提示框都没跳出来。解决了麻烦分享一下。多谢!!!

    01-22
    赞同
    回复 2
    • 杨梅子
      杨梅子
      01-23

      我已经解决了,我不知道你的小程序 是否用到位置信息,用的话你需要到app.json去设置一下  https://developers.weixin.qq.com/miniprogram/dev/framework/config.html#全局配置     这个网址https://www.cnblogs.com/xuzhengzong/p/7715810.html 我再网上找到的,对于那个不管是地址,还是保存图片都很实用,你可以看着写一下,还有你想测试的话,最好开发者工具升级到最新版本,

      01-23
      回复
    • 六点水的凹凸曼
      六点水的凹凸曼
      01-24

      老哥我感觉我们是不是遇到了一样的问题,opensetting无效了?

      01-24
      回复