now007
now007
  • 发布:2026-04-27 17:57
  • 更新:2026-04-27 17:58
  • 阅读:15

【报Bug】saveVideoToPhotosAlbum 在鸿蒙模拟器中报错:code: -2004

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 5.05

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: 模拟器:mate70

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

预期结果:

实际结果:

bug描述:

17:45:25.307 下载成功 {tempFilePath: "/data/storage/el2/base/cache/__UNI__89F053E/uni-download/4(8).png;filename*=utf-8", statusCode: 200, errMsg: "downloadFile:ok", errSubject: "downloadFile"} at utils/download/index.js:106  

通过 uni.downloadFile 下载得文件返回得文件名带有:;filename*=utf-8,这是合理得吗? 因为又这个后缀导致保存到相册失败了。

然后重新定义文件名

const harmonyFileName = `${Date.now()}_${(fileName || url.split('/').pop().split('?')[0] || 'download.png').replace(/[\/:*?"<>|;]/g, '_')}`;  
downloadOptions.filePath = `/uni-download/${harmonyFileName}`;

17:47:40.231 下载成功 {tempFilePath: "/data/storage/el2/base/files/apps/UNI89F053E/www/uni-download/1777283259670_5_2033365021384347648.png", statusCode: 200, errMsg: "downloadFile:ok", errSubject: "downloadFile"} at utils/download/index.js:107

2026-04-27 17:57 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

作为 DCloud 官方人员,我对该 bug 反馈进行如下评审:

反馈完整性评估

该反馈基本合格但缺少关键信息

优点

  • 环境信息完整(HBuilderX 5.05、HarmonyOS NEXT 6.0.0、模拟器)
  • 提供了下载文件的返回路径示例,明确指出了 ;filename*=utf-8 后缀问题
  • 提供了文件名处理代码片段

不足

  1. 复现步骤缺失:仅标注"无",无法判断操作轨迹
  2. 预期/实际结果缺失:未描述期望的成功表现与实际的错误现象
  3. 代码不完整:缺少 saveVideoToPhotosAlbum 的调用代码,无法确认参数传递方式
  4. 关键信息未提供:未说明是否已配置 ohos.permission.WRITE_IMAGEVIDEO 权限,未确认真机是否复现

Bug 成立性分析

该问题部分成立

从知识库检索发现:

  • 对话记录中有多起鸿蒙平台 saveImageToPhotosAlbum/saveVideoToPhotosAlbum 返回 code: -2004 的报错(ISSUE 系统记录)
  • 官方人员此前回复此类问题需提供完整报错截图空白工程复现

关于文件名问题
filename*=utf-8 是 RFC 5987 标准的 Content-Disposition 编码格式,属于正常的 HTTP 协议行为。用户通过正则替换处理是正确的做法,但 -2004 错误码通常指向权限未配置模拟器限制

技术评审结论

  1. 模拟器限制:HarmonyOS 模拟器(特别是 Mate70 模拟器)对相册访问有严格限制,建议优先在真机验证
  2. 权限检查:鸿蒙平台保存到相册需要 ohos.permission.WRITE_IMAGEVIDEO 权限,需在 manifest 中声明
  3. 替代方案:当前 uni-app 鸿蒙端 saveVideoToPhotosAlbum 存在兼容性问题,建议使用插件市场方案:

后续处理建议

请补充以下信息后重新提交:

  1. 完整的 saveVideoToPhotosAlbum 调用代码(含 success/fail 回调)
  2. manifest.json 中鸿蒙权限配置截图
  3. 真机测试结果(模拟器可能不支持相册写入)
  4. 使用空白工程(仅包含下载+保存功能)的复现步骤

临时解决方案
尝试使用 uni.saveFile 将文件保存到应用私有目录后,再通过上述插件市场的鸿蒙专用插件保存到相册。

知识库依据:对话记录中 DCloud_UNI_OttoJi 对同类 -2004 错误的处理建议;插件市场鸿蒙保存相册插件文档。

内容为 AI 生成,仅供参考

要回复问题请先登录注册