HarmonyOS鸿蒙Next中使用uni app开发时使用uni.uploadFile上传视频文件
HarmonyOS鸿蒙Next中使用uni app开发时使用uni.uploadFile上传视频文件 【问题描述】:上传视频文件 原文件只有12mb左右 但是使用uni.chooseVideo 选择视频 用 uni.uploadFile 上传时会变大10倍左右,真机有问题,模拟器正常
【问题现象】:

【版本信息】:DevEco Studio 6.0.2 Release 手机API22 harmmonyOS 6.0.0
【复现代码】:不适用
【尝试解决方案】:不适用
更多关于HarmonyOS鸿蒙Next中使用uni app开发时使用uni.uploadFile上传视频文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1. 使用 uni.compressVideo 压缩视频后再上传
在真机上,建议先使用 uni.compressVideo 对视频进行压缩,再调用 uni.uploadFile 上传。
2. 使用 uni-file-picker 组件(推荐)
知识库中明确推荐使用 uni-file-picker 组件,它内置了压缩、上传、进度展示等功能,支持视频、图片等多种类型文件,并自动上传到 uniCloud 或你指定的服务器。
3. 检查是否使用了原始路径
部分安卓机型在 chooseVideo 返回的是未压缩的原始视频路径,体积较大。你可以通过打印 res.size 来确认
更多关于HarmonyOS鸿蒙Next中使用uni app开发时使用uni.uploadFile上传视频文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个得在uniapp社区反馈下,让他们推进
可以反馈给Uniapp官方……或者尝试封装UTS插件,用原生鸿蒙的能力实现
你这应该先问问UNIAPP那边是怎么实现上传的!
在HarmonyOS Next中使用uni-app开发时,调用uni.uploadFile上传视频文件,需确保应用已配置网络权限(ohos.permission.INTERNET)。上传操作需在UI线程外执行,建议使用异步任务。文件路径应使用鸿蒙系统的文件管理API获取,如使用@ohos.file.fs模块。注意鸿蒙Next的安全机制,确保目标服务器支持HTTPS。上传进度回调可在鸿蒙的UI线程中更新界面。
在HarmonyOS Next环境下,使用uni-app的uni.uploadFile上传视频文件时出现体积异常增大的问题,通常与文件处理或编码环节有关。根据你提供的现象(真机异常、模拟器正常),这很可能与HarmonyOS Next系统对媒体文件的处理机制有关。
核心原因分析:
- 视频重编码:HarmonyOS Next在真机上调用
uni.chooseVideo选择视频时,系统可能会对视频进行默认的重编码或封装处理(例如,为了适配系统播放器或安全策略),导致文件体积增大。这在模拟器环境中可能未被完全模拟。 - 文件路径与格式:
uni.chooseVideo返回的临时文件路径在真机上可能指向一个经过系统处理的副本(如转换为其他封装格式或重新编码),而非原始文件。
解决方案:
- 检查并指定视频源参数:在调用
uni.chooseVideo时,尝试明确设置compressed为false,并指定sourceType,以减少系统自动处理:uni.chooseVideo({ sourceType: ['album', 'camera'], // 指定来源 compressed: false, // 禁用压缩(注意:可能不生效,取决于系统行为) success: (res) => { console.log('文件大小:', res.size); // 确认选择后的大小 // 上传res.tempFilePath } }); - 验证文件信息:在
success回调中,输出res.size和res.duration,确认选择后文件是否已被系统处理。若res.size已显著大于原文件,则问题出在选择环节。 - 使用HarmonyOS原生媒体接口:如果上述方法无效,考虑在HarmonyOS Next环境下使用原生媒体选择接口(如
@ohos.file.picker)获取视频文件,直接获取原始文件路径,再通过uni.uploadFile上传。这需要编写HarmonyOS原生代码,并封装为uni-app可调用的模块。 - 分片上传:如果文件变大不可避免,可考虑在客户端实现分片上传,将大文件分割为多个小块上传,以减轻单次上传压力。
当前建议: 优先尝试方案1和2,确认是否为系统处理导致。若问题依旧,需考虑HarmonyOS Next与uni-app在媒体文件处理上的兼容性差异,可能需要等待框架更新或采用原生方案。

