ujoin_wql
ujoin_wql
  • 发布:2023-05-15 15:01
  • 更新:2025-01-07 14:29
  • 阅读:344

【报Bug】uni.previewImage方法预览本地图片,更新完不一样的图片内容,但同一的图片名称,预览图片时未更新内容

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.7.11

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: HarmonyOS 2.0.0

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

let _url = '/storage/emulated/0/Android/data/io.dcloud.HBuilder/downloads/headPortrait/311249ce-6444-4303-99ba-32c64f3c4df7?ran=1684132575644';//图片A
uni.previewImage({urls: [img],current: img});//预览图片A
更新完当前图片后,路径不变,但是内容变为图片B
let _url = '/storage/emulated/0/Android/data/io.dcloud.HBuilder/downloads/headPortrait/311249ce-6444-4303-99ba-32c64f3c4df7?ran=1684132575994';//图片B
uni.previewImage({urls: [img],current: img});//结果:预览内容还是图片A

预期结果:

更新完后,预览内容为图片B

实际结果:

预览内容还是图片A

bug描述:

uni.previewImage方法预览本地图片,同样的图片路径,但是预览内容未即时更新

2023-05-15 15:01 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

直接去 手机文件管理器 查看这张照片,一样不一样

上传可以复现的demo,方便排查

  • ujoin_wql (作者)

    直接打开文件本身时,是图片B

    2023-05-15 15:44

ujoin_wql

ujoin_wql (作者)

let _url = '/storage/emulated/0/Android/data/io.dcloud.HBuilder/downloads/headPortrait/311249ce-6444-4303-99ba-32c64f3c4df7';//图片A
uni.previewImage({urls: [img],current: img});//此时预览结果是图片A
uni.removeSavedFile({
filePath:_url ,
complete: function() {
let dtask = plus.downloader.createDownload(httpUrl, {
filename: '_downloads/headPortrait/311249ce-6444-4303-99ba-32c64f3c4df7'
}, function(d, status) {
//d为文件下载对象
if (status == 200) {
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename)
uni.previewImage({urls: [d.filename],current: d.filename});//结果预览图片A,期望预览图片B
} else {
fc.consoleLog("下载失败---------------------------->")
}
})
dtask.start(); //执行下载
});

  • ujoin_wql (作者)

    从文件管理里打开对应图片是图片B

    2023-05-15 15:52

1***@qq.com

1***@qq.com

解决了吗

1***@qq.com

1***@qq.com

直接IO读文件,预览base64格式的

8***@qq.com

8***@qq.com

在使用 uni.previewImage 方法预览本地图片时,如果更新了图片内容但文件名相同,可能会遇到图片内容未更新的问题。这是因为浏览器或应用可能会缓存图片,导致即使图片内容已更新,预览时仍显示旧的内容

为了解决这个问题,可以尝试以下几种方法:

添加随机参数:在图片路径后添加一个随机参数,以防止缓存。例如:

javascript  
let url = '/path/to/your/image.jpg';  
let timestamp = new Date().getTime();  
uni.previewImage({  
  urls: [`${url}?t=${timestamp}`],  
  current: `${url}?t=${timestamp}`  
});

这种方法通过在图片路径后添加一个时间戳或其他随机参数,使得每次请求的 URL 都是唯一的,从而避免缓存

这是ai给的解决方案,可以解决这个问题

要回复问题请先登录注册