上传视频文件 原文件只有12mb左右 但是使用uni.chooseVideo 选择视频 用 uni.uploadFile 上传时会变大10倍左右,真机有问题,模拟器正常
- 发布:2026-02-28 11:30
- 更新:2026-02-28 17:54
- 阅读:32
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
根据知识库中提供的信息,uni.chooseVideo 和 uni.uploadFile 本身不会导致文件体积变大,但你遇到的“真机上视频变大 10 倍”问题,很可能是由于视频未压缩或系统返回的是未压缩的原始文件路径,而模拟器中可能默认使用了压缩版本。
✅ 解决方案建议(基于知识库):
1. 使用 uni.compressVideo 压缩视频后再上传
在真机上,建议先使用 uni.compressVideo 对视频进行压缩,再调用 uni.uploadFile 上传。
示例代码如下:
uni.chooseVideo({
sourceType: ['album', 'camera'],
success: function (res) {
uni.compressVideo({
src: res.tempFilePath,
quality: 'medium',
success: function (compressRes) {
uni.uploadFile({
url: 'https://your-server.com/upload',
filePath: compressRes.tempFilePath,
name: 'file',
success: (uploadRes) => {
console.log('上传成功', uploadRes);
}
});
}
});
}
});
⚠️ 注意:
compressVideo仅在 App 端支持,且 iOS 支持更多参数(如 bitrate、fps、resolution 等)。
2. 使用 uni-file-picker 组件(推荐)
知识库中明确推荐使用 uni-file-picker 组件,它内置了压缩、上传、进度展示等功能,支持视频、图片等多种类型文件,并自动上传到 uniCloud 或你指定的服务器。
<uni-file-picker
limit="1"
file-mediatype="video"
title="选择视频"
@success="uploadSuccess"
/>
3. 检查是否使用了原始路径
部分安卓机型在 chooseVideo 返回的是未压缩的原始视频路径,体积较大。你可以通过打印 res.size 来确认:
uni.chooseVideo({
success: function (res) {
console.log('原始大小:', res.size); // 单位 KB
}
});
✅ 总结
你遇到的问题不是 uni.uploadFile 本身导致的文件变大,而是选择了未压缩的视频文件。
建议:
- 真机环境下先压缩再上传;
- 或使用 uni-file-picker 组件 自动处理压缩与上传。
如需进一步压缩控制,可在插件市场搜索“视频压缩”相关插件:https://ext.dcloud.net.cn/search?q=视频压缩