uni-app中uni.saveImageToPhotosAlbum报错"saveImageToPhotosAlbum:fail UNKOWN ERROR",errcode:12

uni-app中uni.saveImageToPhotosAlbum报错"saveImageToPhotosAlbum:fail UNKOWN ERROR",errcode:12

以前正常可以保存图片的,产品已上线,但是今天报错,同事反馈保存不了; 然后我打开试的时候,就报了这个错误,很莫名其妙的 ,那为大佬解释一下,求助 急~

saveImage(url) {
    console.log('保存图片地址', url);
    let _this = this;
    uni.saveImageToPhotosAlbum({
        filePath: url,
        success: function() {
            _this.text("保存成功")
            _this.reportResults()
            uni.reLaunch({
                url: "/pages/index/index"
            })
        },
        fail: function(err) {
            console.log('保存图片错误', err);
            _this.text("保存失败,请稍后重试")
        }
    });
}

更多关于uni-app中uni.saveImageToPhotosAlbum报错"saveImageToPhotosAlbum:fail UNKOWN ERROR",errcode:12的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

在你提供的代码中,有几个需要注意的地方。首先,在JavaScript的函数中,this的指向可能不是你预期的上下文。在success和fail回调函数中,this的指向可能会改变,不再指向外部函数的this。另外,this.text和this.reportResults这两个方法可能不存在,或者它们的上下文不正确。 为了修复这些问题,你可以使用箭头函数来确保this的正确指向,并且确保text和reportResults方法存在且上下文正确。 下面是修改后的代码: javascript saveImage(url) { console.log(‘保存图片地址’, url);
uni.saveImageToPhotosAlbum({ filePath: url, success: () => { console.log(‘图片保存成功’); this.text(“保存成功”); this.reportResults(); uni.reLaunch({ url: “/pages/index/index” }); }, fail: (err) => { console.log(‘保存图片错误’, err); this.text(“保存失败,请稍后重试”); } }); } 在这个修改版本中,我使用了箭头函数来确保this的指向是正确的。这样,this.text和this.reportResults就会正确地引用到外部函数的this上下文。 另外,请注意,这个代码片段依赖于uni.saveImageToPhotosAlbum、this.text和this.reportResults这些外部定义。如果这些函数或方法不存在,或者它们的上下文不正确,你可能还需要进一步修改代码。

更多关于uni-app中uni.saveImageToPhotosAlbum报错"saveImageToPhotosAlbum:fail UNKOWN ERROR",errcode:12的实战教程也可以访问 https://www.itying.com/category-93-b0.html


好的

找到原因了 感谢

回复 hcwh: 什么原因,谢谢

在 uni-app 中使用 uni.saveImageToPhotosAlbum 保存图片到相册时,如果遇到 "saveImageToPhotosAlbum:fail UNKOWN ERROR" 错误,并且错误码为 12,通常是由于以下原因之一:

1. 权限问题

  • 原因:在 Android 6.0 及以上版本,应用需要动态申请存储权限(WRITE_EXTERNAL_STORAGE)。如果用户拒绝了权限请求,保存图片到相册的操作会失败。
  • 解决方案
    • 确保在 manifest.json 中配置了所需的权限:
      {
        "permission": {
          "scope.userLocation": {
            "desc": "你的位置信息将用于小程序位置接口的效果展示"
          },
          "scope.writePhotosAlbum": {
            "desc": "你的相册信息将用于小程序保存图片到相册"
          }
        }
      }
      
    • 在调用 uni.saveImageToPhotosAlbum 之前,先检查并申请权限:
      uni.authorize({
        scope: 'scope.writePhotosAlbum',
        success() {
          uni.saveImageToPhotosAlbum({
            filePath: '图片路径',
            success() {
              console.log('保存成功');
            },
            fail(err) {
              console.log('保存失败', err);
            }
          });
        },
        fail() {
          console.log('用户拒绝了权限请求');
        }
      });
      

2. 图片路径问题

  • 原因filePath 参数指定的图片路径可能无效或不存在。
  • 解决方案:确保 filePath 参数是一个有效的本地文件路径。可以通过 uni.chooseImage 选择图片,或者通过 uni.downloadFile 下载图片。

3. 文件系统问题

  • 原因:在某些设备上,文件系统可能存在问题,导致保存操作失败。
  • 解决方案:尝试使用其他图片路径,或者重启设备后再次尝试。

4. 系统相册问题

  • 原因:系统相册可能存在问题,导致保存图片失败。
  • 解决方案:尝试清理系统相册缓存,或者重启设备后再次尝试。

5. 其他未知错误

  • 原因:可能是由于其他未知的系统或环境问题导致的错误。
  • 解决方案:可以尝试以下步骤:
    • 确保 uni-app 和微信小程序基础库版本是最新的。
    • 检查是否有其他代码或插件影响了保存操作。
    • 尝试在真机上运行,而不是模拟器。

示例代码

以下是一个完整的示例代码,包括权限检查和保存图片到相册的操作:

// 检查并申请权限
uni.authorize({
  scope: 'scope.writePhotosAlbum',
  success() {
    // 保存图片到相册
    uni.saveImageToPhotosAlbum({
      filePath: '图片路径', // 替换为你的图片路径
      success() {
        console.log('保存成功');
      },
      fail(err) {
        console.log('保存失败', err);
      }
    });
  },
  fail() {
    console.log('用户拒绝了权限请求');
  }
});
回到顶部