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

6 回复

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系统对媒体文件的处理机制有关。

核心原因分析:

  1. 视频重编码:HarmonyOS Next在真机上调用uni.chooseVideo选择视频时,系统可能会对视频进行默认的重编码或封装处理(例如,为了适配系统播放器或安全策略),导致文件体积增大。这在模拟器环境中可能未被完全模拟。
  2. 文件路径与格式uni.chooseVideo返回的临时文件路径在真机上可能指向一个经过系统处理的副本(如转换为其他封装格式或重新编码),而非原始文件。

解决方案:

  1. 检查并指定视频源参数:在调用uni.chooseVideo时,尝试明确设置compressedfalse,并指定sourceType,以减少系统自动处理:
    uni.chooseVideo({
        sourceType: ['album', 'camera'], // 指定来源
        compressed: false, // 禁用压缩(注意:可能不生效,取决于系统行为)
        success: (res) => {
            console.log('文件大小:', res.size); // 确认选择后的大小
            // 上传res.tempFilePath
        }
    });
    
  2. 验证文件信息:在success回调中,输出res.sizeres.duration,确认选择后文件是否已被系统处理。若res.size已显著大于原文件,则问题出在选择环节。
  3. 使用HarmonyOS原生媒体接口:如果上述方法无效,考虑在HarmonyOS Next环境下使用原生媒体选择接口(如@ohos.file.picker)获取视频文件,直接获取原始文件路径,再通过uni.uploadFile上传。这需要编写HarmonyOS原生代码,并封装为uni-app可调用的模块。
  4. 分片上传:如果文件变大不可避免,可考虑在客户端实现分片上传,将大文件分割为多个小块上传,以减轻单次上传压力。

当前建议: 优先尝试方案1和2,确认是否为系统处理导致。若问题依旧,需考虑HarmonyOS Next与uni-app在媒体文件处理上的兼容性差异,可能需要等待框架更新或采用原生方案。

回到顶部