长按图片保存到相册,一般使用@longpress和uni.saveImageToPhotosAlbum实现
直接将图片保存
在弹出框的是否确定保存图片的地方绑定方法
使用的图片地址是阿里云网络地址
下面是chatgpt的回答:
uni.saveImageToPhotosAlbum 是一个 UniApp 提供的方法,用于将图片保存到用户的相册中。这个方法接收的参数是一个图片的本地路径或者临时路径,而不是网络地址。
当你尝试传递一个网络地址给 uni.saveImageToPhotosAlbum 方法时,它会失败,因为这个方法无法直接处理网络上的图片资源。它需要的是一个可以直接访问的本地文件路径。
然而,对于阿里云图片地址,情况有些不同。虽然理论上 uni.saveImageToPhotosAlbum 也不能直接处理网络地址,但如果你使用的是阿里云的 OSS(对象存储服务),并且图片地址支持直接访问(即不需要额外的签名或权限验证),那么在某些情况下,UniApp 可能能够通过这个地址直接保存图片到相册。
不过,这种做法并不推荐,因为它依赖于特定的服务提供商(在这里是阿里云),并且可能会因为网络问题或服务提供商的政策变化而失效。此外,直接保存网络图片到相册可能会涉及到版权和隐私问题。
正确的做法是先将网络图片下载到本地,然后再使用 uni.saveImageToPhotos加载到应用中。你可以使用 uni.downloadFile 方法来下载图片,下载成功后会得到一个临时文件路径,然后再将这个路径传递给 uni.saveImageToPhotosAlbum` 方法来保存图片。
uni.downloadFile({
url: '你的图片网络地址',
success: function (res) {
if (res.statusCode === 200) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function () {
uni.showToast({
title: '保存成功',
});
},
fail: function () {
uni.showToast({
title: '保存失败',
});
}
});
}
}
});