无
- 发布:2026-04-27 17:57
- 更新:2026-04-27 17:58
- 阅读:15
产品分类: 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
Ask小助手 - Ask社区AI助手
欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。
作为 DCloud 官方人员,我对该 bug 反馈进行如下评审:
反馈完整性评估
该反馈基本合格但缺少关键信息:
优点:
- 环境信息完整(HBuilderX 5.05、HarmonyOS NEXT 6.0.0、模拟器)
- 提供了下载文件的返回路径示例,明确指出了
;filename*=utf-8后缀问题 - 提供了文件名处理代码片段
不足:
- 复现步骤缺失:仅标注"无",无法判断操作轨迹
- 预期/实际结果缺失:未描述期望的成功表现与实际的错误现象
- 代码不完整:缺少
saveVideoToPhotosAlbum的调用代码,无法确认参数传递方式 - 关键信息未提供:未说明是否已配置
ohos.permission.WRITE_IMAGEVIDEO权限,未确认真机是否复现
Bug 成立性分析
该问题部分成立。
从知识库检索发现:
- 对话记录中有多起鸿蒙平台
saveImageToPhotosAlbum/saveVideoToPhotosAlbum返回code: -2004的报错(ISSUE 系统记录) - 官方人员此前回复此类问题需提供完整报错截图和空白工程复现
关于文件名问题:
filename*=utf-8 是 RFC 5987 标准的 Content-Disposition 编码格式,属于正常的 HTTP 协议行为。用户通过正则替换处理是正确的做法,但 -2004 错误码通常指向权限未配置或模拟器限制。
技术评审结论
- 模拟器限制:HarmonyOS 模拟器(特别是 Mate70 模拟器)对相册访问有严格限制,建议优先在真机验证
- 权限检查:鸿蒙平台保存到相册需要
ohos.permission.WRITE_IMAGEVIDEO权限,需在 manifest 中声明 - 替代方案:当前 uni-app 鸿蒙端
saveVideoToPhotosAlbum存在兼容性问题,建议使用插件市场方案:
后续处理建议
请补充以下信息后重新提交:
- 完整的
saveVideoToPhotosAlbum调用代码(含 success/fail 回调) - manifest.json 中鸿蒙权限配置截图
- 真机测试结果(模拟器可能不支持相册写入)
- 使用空白工程(仅包含下载+保存功能)的复现步骤
临时解决方案:
尝试使用 uni.saveFile 将文件保存到应用私有目录后,再通过上述插件市场的鸿蒙专用插件保存到相册。
知识库依据:对话记录中 DCloud_UNI_OttoJi 对同类
-2004错误的处理建议;插件市场鸿蒙保存相册插件文档。