uni-app 安卓端保存视频到相册成功但未重命名(文件名为临时文件名称且无MP4后缀),导致相册中不显示

uni-app 安卓端保存视频到相册成功但未重命名(文件名为临时文件名称且无MP4后缀),导致相册中不显示

开发环境 版本号 项目创建方式
Windows 64 HBuilderX

产品分类:
uniapp/App

PC开发环境操作系统:
Windows

HBuilderX类型:
正式

HBuilderX版本号:
3.1.13

手机系统:
Android

手机系统版本号:
Android 9.0

手机厂商:
华为

手机机型:
华为8x

页面类型:
vue

打包方式:
云端

bug描述:

//1号链接.保存后在文件管理中的格式如图(无.mp4后缀)
//2号链接.保存后正常显示有.mp4后缀

xiazaishiping() {
uni.showLoading({
title: '保存视频中'
});
uni.downloadFile({    
url: this.$data.qsyshipingxiazai,**//1号链接.这里是"http://v3-ppx.ixigua.com/1d8d845f6f09d8c47ceb38a3657151ea/60afde0a/video/tos/cn/tos-cn-ve-0076/437a9c27fb8f4f6397c4d6d42d48a862/?a=1319&br=1408&bt=1408&cd=0%7C0%7C0&ch=0&cr=0&cs=0&cv=1&dr=6&ds=6&er=&l=202105280059210102122031554F1E6CCD&lr=&mime_type=video_mp4&net=0&pl=0&qs=0&rc=ajlsbXBkdjVpNTMzNGYzM0ApOzdmZjpmNDs2Nzg0PDU1ZWdwX3BwLzRqYGtgLS1kMWFzcy5jYy4wMWAyNDIxMGJfNjA6Yw%3D%3D&vl=&vr="就会无法保存到相册    
success: (ress) => {    
if (ress.statusCode === 200) {    
uni.saveVideoToPhotosAlbum({    
filePath: ress.tempFilePath,    
success: function(red) {    
console.log(red);    
uni.showToast({    
title: '保存相册成功'    
})    
},    
fail(res) {    
console.log(res);    
uni.hideLoading()    
if (res.errMsg == "saveVideoToPhotosAlbum:fail auth deny") {    
uni.showModal({    
title: '您需要授权相册权限',    
success(res) {    
if (res.confirm) {    
uni.openSetting({    
success(res) {    
},    
fail(res) {    
console.log(res)    
}    
})    
}    
}    
})    
}    
}    
});    
}    
}

更多关于uni-app 安卓端保存视频到相册成功但未重命名(文件名为临时文件名称且无MP4后缀),导致相册中不显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 安卓端保存视频到相册成功但未重命名(文件名为临时文件名称且无MP4后缀),导致相册中不显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的文件路径和文件格式问题。在Android系统中,相册应用通过文件扩展名来识别媒体文件类型。当保存的视频文件没有.mp4后缀时,系统无法正确识别为视频文件,因此不会在相册中显示。

问题出现在下载链接上:1号链接的URL参数经过复杂编码,可能影响了文件扩展名的正确识别。2号链接能正常显示说明代码逻辑本身没有问题。

解决方案:

  1. 强制添加文件扩展名:在调用saveVideoToPhotosAlbum前,确保文件路径包含正确的扩展名:
let filePath = ress.tempFilePath;
if (!filePath.toLowerCase().endsWith('.mp4')) {
    filePath = filePath + '.mp4';
}

uni.saveVideoToPhotosAlbum({
    filePath: filePath,
    // ...其他参数
});
回到顶部