uniapp 21 下载图片 errMsg: "saveImageToPhotosAlbum:fail not absolute path

1. uni.saveImageToPhotosAlbum 直接调报错

图片下载失败

uni.saveImageToPhotosAlbum({
    filePath: fileBaseUrl + "static/images/pet/logoQRCode.jpg",
    success: function (res) {
        console.log('save success', res);
        proxy.$modal.showToast('保存成功')
    }, fail(err) {
        console.error('图片下载失败', err);
    }, complete(res) {
        console.log('图片下载结束', res);
    }
});

这个报错的意思是:你把‌网络图片的 URL 直接传给了 saveImageToPhotosAlbum‌,但这个接口只认‌本地文件路径‌(临时目录、缓存目录等),不能直接处理 https:// 开头的网络地址。

2. 🛠️ 解决办法:先下载,再保存

核心思路:先用 wx.downloadFile 或 wx.getImageInfo 把网络图片下载到本地拿到临时路径,再用这个本地路径去保存。

3. uniapp 版本

uni.getImageInfo({
    src: fileBaseUrl + "static/images/pet/logoQRCode.jpg",
    success: function (res) {
        console.log('getImageInfo success', res);
        if (res.errMsg == "getImageInfo:ok") {
            const imgPath = res.path
            uni.saveImageToPhotosAlbum({
                filePath: imgPath,
                success: function (res) {
                    console.log('save success', res);
                    proxy.$modal.showToast('保存成功')
                }, fail(err) {
                    console.error('图片下载失败', err);
                }, complete(res) {
                    console.log('图片下载结束', res);
                }
            });
        }
    }, fail(err) {
        console.error('getImageInfo error', err);
    }, complete(res) {
        console.log('getImageInfo finished', res);
    }
})

4. 微信小程序版本

// 1. 下载网络图片到本地
wx.downloadFile({
  url: 'https://fchy-prod-1430.../logoQRCode.jpg',  // 你的网络图片地址
  success(res) {
    if (res.statusCode === 200) {
      // 2. 用下载后的本地临时路径保存到相册
      wx.saveImageToPhotosAlbum({
        filePath: res.tempFilePath,
        success() {
          console.log('保存成功')
        },
        fail(err) {
          console.error('保存失败', err)
        }
      })
    }
  },
  fail(err) {
    console.error('下载失败', err)
  }
})
posted @ 2026-09-18 22:30  超轶绝尘  阅读(18)  评论(0)    收藏  举报