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)
}
})

浙公网安备 33010602011771号