uni-app 正式版3.1.22.20210709 previewImage 默认无法保存图片
uni-app 正式版3.1.22.20210709 previewImage 默认无法保存图片
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
示例代码:
previewImage(url) {
uni.previewImage({
current: url,
urls: this.imageList,
indicator: "default",
success:()=>
{
uni.showToast({
title:'如部分手机保存失败,请截图',
position:'bottom'
})
}
})
},
操作步骤:
previewImage(url) {
uni.previewImage({
current: url,
urls: this.imageList,
indicator: "default",
success:()=>
{
uni.showToast({
title:'如部分手机保存失败,请截图',
position:'bottom'
})
}
})
},
预期结果:
可以保存到本地
实际结果:
无法保存到本地,查了下资料,发现好多人有,我记得以前我测试时好像是没问题的。
bug描述:
预览图片后,点击保存,提示 保存图像到相册,但是相册里面没有,机型华为
previewImage(url) {
uni.previewImage({
current: url,
urls: this.imageList,
indicator: "default",
success:()=>
{
uni.showToast({
title:'如部分手机保存失败,请截图',
position:'bottom'
})
}
})
},
我都提示成这样了,简直了
我的本地输出结果
url参数为:_doc/image/download/13590253452270018560_1400464047-1359025345227001856-RDdhWFSNFkQXRc27YXo02Tz0RE1MmzXw
url参数为:file:///storage/emulated/0/Android/data/com.erp.ykk/apps/__UNI__EDA0EE6/doc/image/download/13590253452270018560_1400464047-1359025345227001856-RDdhWFSNFkQXRc27YXo02Tz0RE1MmzXw
更多关于uni-app 正式版3.1.22.20210709 previewImage 默认无法保存图片的实战教程也可以访问 https://www.itying.com/category-93-b0.html
怎么没人啊
更多关于uni-app 正式版3.1.22.20210709 previewImage 默认无法保存图片的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你解决了吗
在 uni-app 3.1.22 版本中,previewImage 的保存功能在部分 Android 机型上确实存在兼容性问题,尤其是华为等品牌。这通常是由于系统权限或文件路径处理机制导致的。
从你提供的代码和输出结果来看,你使用的是本地文件路径(file:// 协议)。在 Android 10 及以上版本中,由于分区存储(Scoped Storage)的限制,应用无法直接通过文件路径访问其他目录,这可能导致保存失败。
解决方案:
-
检查并动态申请存储权限
在调用previewImage前,确保已获取WRITE_EXTERNAL_STORAGE权限。可以使用uni.authorize或uni.getSetting进行权限检查和申请。 -
使用 base64 或临时文件路径
如果图片来源于网络或应用内资源,建议先通过uni.downloadFile下载到临时路径,或转换为 base64 格式。临时路径通常兼容性更好。 -
使用 uni.saveImageToPhotosAlbum
如果需要确保保存成功,可以单独实现保存功能:在预览界面添加自定义按钮,调用uni.saveImageToPhotosAlbum保存图片。注意该方法需要用户授权,且路径需为临时文件或 base64。 -
更新 uni-app 版本
此问题在后续版本中可能已修复,建议升级到最新稳定版,并测试是否仍存在该问题。
代码调整示例:
// 先确保图片路径为临时路径或网络 URL
// 若为本地文件,可使用 uni.getFileSystemManager 转换为临时路径
previewImage(url) {
uni.previewImage({
current: url,
urls: this.imageList,
indicator: "default"
});
}


