uni-app 安卓调用uni.previewImage后长按保存带参数图片文件名相同导致覆盖
uni-app 安卓调用uni.previewImage后长按保存带参数图片文件名相同导致覆盖
操作步骤:
调用uni.previewImage预览图片
长按图片
点击“保存相册”
再换另一张图片
长按图片保存
预期结果:
相册里面出现两张图片
实际结果:
相册里只出现最后的那张,文件名为getPreviewPhotoes.jpeg
bug描述:
带参数的图片链接http://47.105.217.26:9998/file/getPreviewPhotoes?path=1620956245224_1620956234759.jpg
保存下来的文件名都是getPreviewPhotoes,保存多张会被覆盖掉。
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows 10家庭中文版 | 3.1.12 | HBuilderX |
| Android 8.1 | ||
| OPPO | ||
| oppo r11 |
更多关于uni-app 安卓调用uni.previewImage后长按保存带参数图片文件名相同导致覆盖的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 安卓调用uni.previewImage后长按保存带参数图片文件名相同导致覆盖的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是由于uni.previewImage在安卓平台保存网络图片时,会默认使用URL中的文件名作为保存到相册的文件名。当图片URL参数不同但文件名相同(都是getPreviewPhotoes)时,系统会认为这是同一文件而覆盖保存。
解决方案:
- 服务端修改文件名返回 在服务端确保每个图片返回不同的文件名,可以通过在URL中添加时间戳或唯一标识:
http://47.105.217.26:9998/file/getPreviewPhotoes?path=1620956245224_1620956234759.jpg&t=时间戳
- 使用uni.downloadFile + uni.saveImageToPhotosAlbum 通过代码控制下载和保存过程,自定义文件名:
// 下载图片
uni.downloadFile({
url: '图片URL',
success: (res) => {
if (res.statusCode === 200) {
// 保存到相册,可自定义文件名
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
uni.showToast({title: '保存成功'});
}
});
}
}
});
- 使用plus.downloader管理下载 通过5+ API实现更精细的文件名控制:
const task = plus.downloader.createDownload(url, {
filename: '_doc/downloads/自定义文件名.jpg'
}, (d, status) => {
if (status === 200) {
plus.gallery.save(d.filename);
}
});
task.start();

