uniapp上传视频如何实现
在uniapp中上传视频的具体步骤是什么?需要用到哪些API或插件?能否提供一个完整的代码示例?上传过程中如何监听进度和处理错误?有没有文件大小或格式的限制需要注意?
2 回复
使用uni.chooseVideo选择视频,然后通过uni.uploadFile上传到服务器。记得配置manifest.json中的权限,并处理不同平台的兼容性问题。
在UniApp中实现视频上传,可以通过以下步骤完成:
1. 选择视频文件
使用 uni.chooseVideo 方法选择本地视频:
uni.chooseVideo({
sourceType: ['camera', 'album'], // 来源:相机或相册
maxDuration: 60, // 最大时长(秒)
success: (res) => {
console.log('视频临时路径:', res.tempFilePath);
this.uploadVideo(res.tempFilePath); // 调用上传方法
},
fail: (err) => {
uni.showToast({ title: '选择视频失败', icon: 'none' });
}
});
2. 上传视频到服务器
通过 uni.uploadFile 将视频上传至服务端:
uploadVideo(filePath) {
uni.uploadFile({
url: 'https://your-server.com/upload', // 替换为你的上传接口
filePath: filePath,
name: 'video', // 后端接收的文件字段名
formData: {
userId: '123' // 附加参数(可选)
},
success: (res) => {
const data = JSON.parse(res.data);
uni.showToast({ title: '上传成功' });
},
fail: (err) => {
uni.showToast({ title: '上传失败', icon: 'none' });
}
});
}
3. 服务端注意事项
- 后端需支持
multipart/form-data格式接收文件。 - 注意处理文件大小限制(可在服务端配置)。
- 返回标准JSON响应(如
{code: 200, data: {url: '...'}})。
4. 扩展功能(可选)
- 进度监听:使用
onProgressUpdate监听上传进度。 - 格式验证:通过
tempFilePath后缀名校验格式(如.mp4)。 - 压缩处理:可通过插件(如
uni-compress)压缩视频后再上传。
示例完整代码
<template>
<view>
<button @click="chooseVideo">选择并上传视频</button>
</view>
</template>
<script>
export default {
methods: {
chooseVideo() {
uni.chooseVideo({
sourceType: ['album'],
success: (res) => {
this.uploadVideo(res.tempFilePath);
}
});
},
uploadVideo(filePath) {
uni.uploadFile({
url: 'https://your-api.com/upload',
filePath,
name: 'video',
success: (res) => {
uni.showToast({ title: '上传完成' });
}
});
}
}
}
</script>
注意事项
- 平台差异:H5端可能需单独处理自动播放策略。
- 文件大小:建议在上传前通过
uni.getFileInfo获取文件大小并提示用户。 - 安全限制:确保服务器配置正确的CORS策略(针对H5)。
按照以上步骤即可快速实现UniApp视频上传功能。

