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

4 回复

怎么没人啊

更多关于uni-app 正式版3.1.22.20210709 previewImage 默认无法保存图片的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你解决了吗

2023年了,还没有解决,咱就是是说不行把项目开源了,大家一起解决

在 uni-app 3.1.22 版本中,previewImage 的保存功能在部分 Android 机型上确实存在兼容性问题,尤其是华为等品牌。这通常是由于系统权限或文件路径处理机制导致的。

从你提供的代码和输出结果来看,你使用的是本地文件路径(file:// 协议)。在 Android 10 及以上版本中,由于分区存储(Scoped Storage)的限制,应用无法直接通过文件路径访问其他目录,这可能导致保存失败。

解决方案:

  1. 检查并动态申请存储权限
    在调用 previewImage 前,确保已获取 WRITE_EXTERNAL_STORAGE 权限。可以使用 uni.authorizeuni.getSetting 进行权限检查和申请。

  2. 使用 base64 或临时文件路径
    如果图片来源于网络或应用内资源,建议先通过 uni.downloadFile 下载到临时路径,或转换为 base64 格式。临时路径通常兼容性更好。

  3. 使用 uni.saveImageToPhotosAlbum
    如果需要确保保存成功,可以单独实现保存功能:在预览界面添加自定义按钮,调用 uni.saveImageToPhotosAlbum 保存图片。注意该方法需要用户授权,且路径需为临时文件或 base64。

  4. 更新 uni-app 版本
    此问题在后续版本中可能已修复,建议升级到最新稳定版,并测试是否仍存在该问题。

代码调整示例:

// 先确保图片路径为临时路径或网络 URL
// 若为本地文件,可使用 uni.getFileSystemManager 转换为临时路径
previewImage(url) {
    uni.previewImage({
        current: url,
        urls: this.imageList,
        indicator: "default"
    });
}
回到顶部