saveVideoToPhotosAlbum 在uni-app鸿蒙Next中报错 code -2004
saveVideoToPhotosAlbum 在uni-app鸿蒙Next中报错 code -2004
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 15.6.1 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:15.6.1
HBuilderX类型:正式
HBuilderX版本号:4.84
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS 6.0.0
手机厂商:华为
手机机型:PureX
页面类型:vue
vue版本:vue3
打包方式:离线
项目创建方式:HBuilderX
示例代码:
```javascript
const downloadTask = uni.downloadFile({
url: videoUrl,
header: {
'Content-Type': 'video/mp4'
},
timeout: 300000,
success: res => {
console.log("downloadFile success", res) // res = {tempFilePath: "/data/storage/el2/base/cache/HBuilder/uni-download/(4).download", statusCode: 200, errMsg: "downloadFile:ok", errSubject: "downloadFile"}
uni.hideLoading();
uni.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
uni.showToast({
title: '保存成功',
icon: 'success',
duration: 1500
});
},
fail: (e) => {
console.log("saveVideoToPhotosAlbum failed", e) // e = {errMsg: "saveVideoToPhotosAlbum:fail save error, code: -2004"}
uni.showToast({
title: '保存失败',
icon: 'none',
duration: 1500
});
}
})
},
操作步骤: 在模拟器和真机都有这个问题。
预期结果: 保存成功
实际结果: 保存失败
bug描述: saveVideoToPhotosAlbum 报错mp4 文件,报错:{errMsg: “saveVideoToPhotosAlbum:fail save error, code: -2004”}
怀疑是 tempFilePath 的文件名后缀是 .download,而不是.mp4。 但是也没找到方法修改它。
请帮忙看下这个问题, 谢谢。 @DCloud_UNI_yuhe
有个类似的反馈:https://ask.dcloud.net.cn/question/206804?item_id=307638&rf=false
更多关于saveVideoToPhotosAlbum 在uni-app鸿蒙Next中报错 code -2004的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于saveVideoToPhotosAlbum 在uni-app鸿蒙Next中报错 code -2004的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next系统中,saveVideoToPhotosAlbum返回-2004错误通常与文件格式或权限相关。从你的代码分析,主要问题确实在于下载的文件扩展名为.download而非.mp4,系统无法正确识别文件类型。
解决方案如下:
- 重命名文件:在调用
saveVideoToPhotosAlbum前,使用uni.getFileSystemManager()重命名文件:
const fs = uni.getFileSystemManager()
const newPath = res.tempFilePath.replace('.download', '.mp4')
fs.rename({
oldPath: res.tempFilePath,
newPath: newPath,
success: () => {
uni.saveVideoToPhotosAlbum({
filePath: newPath,
// ...其他参数
})
}
})
- 检查文件权限:确保在
manifest.json中已配置相册写入权限:
{
"app-plus": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
]
}
}
}
}

