uni-app如何上传视频文件(分片上传上去)
uni-app如何上传视频文件(分片上传上去)
因为上传的视频文件较大。后端想采用分片的形式接收。所以前端需要对上传的视频进行分片上传。但是在安卓手机和iOS系统上。uni自身的方法行不通。各种报错。api不支持或者获取不到想要的file对象。有懂得朋友提提意见。
如果使用uniapp接口。只允许文件上传。视频的接口根本获取不到file对象。
大文件切片、分块、分段、分片,可用于分块上传、断点续传(ios、android) :https://ext.dcloud.net.cn/plugin?id=3319
不要打广告哦。我已经使用webview的方式处理了。遇到同样问题的人。需要的人,给我留言。我把代码发给你们。
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:2894488091@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:2834675992@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:897707689@qq.com
大佬,麻烦发一下感谢感谢,1938121877@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:1963530453@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:2361319763@qq.com
大佬,麻烦发一下感谢感谢 1179332650@qq.com
大佬求代码 1332561034@qq.com
回复 6***@qq.com: 大佬求代码 1332561034@qq.com
回复 b***@163.com: 有拿到的老哥,分享一下 1120046367@qq.com ,感谢啊
回复 1***@qq.com: 有拿到的老哥,分享一下 1120046367@qq.com ,感谢啊
回复 6***@qq.com: 大佬求代码
回复 6***@qq.com: 大佬求代码2471288615@qq.com
回复 6***@qq.com: 大佬可否给一个uniapp切片上传的代码qq 1473058438@qq.com 感谢大佬
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:64757797@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:1782918264@qq.com
回复 6***@qq.com: 大大求代码 1274828542@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:3437723784@qq.com
回复 6***@qq.com: 作者大大求代码 835442257@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:1028629081@qq.com
回复 6***@qq.com: 2389071207@qq.com 麻烦发一份。
回复 6***@qq.com: 作者大大可以参考一下代码吗,十分感谢,邮箱:2211718102@qq.com
回复 6***@qq.com: 我也需要源代码,谢谢!给我发一份,邮箱地址是climbertian@163.com,谢谢大佬!
回复 6***@qq.com: 邮箱地址climbertian@163.com,求大佬源码,谢谢!
回复 6***@qq.com: 大佬,代码能给一下吗?感谢1043383601@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:839709309@qq.com
回复 6***@qq.com: 邮箱地址514747832@qq.com,求大佬源码,谢谢!
回复 6***@qq.com: 大佬,麻烦发一下感谢感谢 461144191@qq.com
大佬麻烦发一份,谢谢,282664560@qq.com
回复 6***@qq.com: 作者大大,礼貌求代码,十分感谢!!!
回复 6***@qq.com: 大佬 求代码分享 感激不尽 邮箱:1394225561@qq.com
回复 6***@qq.com: 求代码分享,谢谢791879131@qq.com
回复 6***@qq.com: 求代码分享,谢谢464217008@qq.com
回复 6***@qq.com: 求代码分享,谢谢1516554376@qq.com
回复 6***@qq.com: 求代码分享,谢谢 2960549117@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:35808241@qq.com 感谢!!!
作者大大求代码在此谢谢 邮箱:401157756@qq.com
回复 6***@qq.com: 作者大大求代码 谢谢了 邮箱:2815668146@qq.com
回复 6***@qq.com: 大佬呀 求分享 1091045324@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:1259163451@qq.com 感谢!!!
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:516042245@qq.com
回复 6***@qq.com: 大佬 ,跪求webview app切片上传代码
大佬 ,跪求webview app切片上传代码 984950475@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:475417890@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:1742849781@qq.com
作者大大求代码在此谢谢 邮箱:2878584718@qq.com
回复 6***@qq.com: 哥 求代码 邮箱:469474779@qq.com
回复 6***@qq.com: 作者大大求代码在此谢谢 邮箱:842862970@qq.com
回复 6***@qq.com: 哥 求代码 邮箱:wurui114114@163.com
大佬求代码。1059131354@qq.com
回复 6***@qq.com: 1529349250@qq.com,求代码
作者大大求代码在此谢谢 邮箱:2823363390@qq.com
有拿到的老哥,分享一下 1120046367@qq.com ,感谢啊
回复 1***@qq.com: 有拿到的老哥,分享一下 1091045324@qq.com ,感谢啊
大佬,求代码分享,万分感谢~~邮箱:506813017@qq.com
大佬求分享,2667507070@qq.com
大佬求分享,542396468@qq.com
大佬,webview怎么上传大视频了
大佬,webview怎么上传大视频了 511568425@qq.com
作者大大求分享分片解决方案,1348243182@qq.com
大佬,求代码分享,万分感谢~~邮箱:1251752648@qq.com
大佬,求代码,感激不尽543061231@qq.com
作者大大求代码在此谢谢 邮箱:1007006460@qq.com
大佬求分享,huangjiajin_work@163.com
正好需要,dddddl7@outlook.com
求大佬1654848119@qq.com
你好,能发我一份代码吗?最近要做这个功能,我想参考下, 邮箱是2855952328@qq.com
大佬,求代码分享,万分感谢 邮箱:1653223839@qq.com
大佬求分享,谢谢。1335430646@qq.com
大佬,求代码分享,万分感谢~~邮箱:wex521102@163.com
大佬求代码 505078755@qq.com
大佬求代码 1332561034@qq.com
作者大大求代码在此谢谢 邮箱:1278493286@qq.com
作者大大求代码在此谢谢 邮箱:577450040@qq.com
呜呜呜这个问题困扰我大半个月了,求!
3021129754@qq.com
有拿到的老哥,分享一下 1120046367@qq.com ,感谢啊
大佬求代码 1019010773@qq.com
有拿到的老哥,分享一下 1120046367@qq.com ,感谢啊
大佬求代码 xiahai7793888@qq.com
同求598132561@qq.com
大佬求代码 844851670@qq.com
求大佬分享代码 1044656020@qq.com
作者大大求代码在此谢谢 邮箱:3437723784@qq.com
大佬求代码, 1019010773@qq.com
大佬求代码, 1345244341@qq.com
谢谢
大佬,分享代码,谢谢!邮箱地址:1651684737@qq.com 谢谢啦!
上传成功返回的格式为json就可以了!
大佬625758279@qq.com
大佬求一下源码,2657544620@qq.com,谢谢
大佬,麻烦发一下感谢感谢,892764762@qq.com
求大佬发一份,812292994@qq.com
有拿到的大佬吗 求发一份 2806904697@qq.com
求发一份,liying66220@163.com 谢谢
大佬,求代码分享,万分感谢~~邮箱:599657495@qq.com
大佬,求分享代码,1743260507@qq.cm
有拿到的老哥,分享一下 1091045324@qq.com ,感谢啊
有拿到的老哥,分享一下1421101050@qq.com ,感谢啊
求分享呀大佬,861497102@qq.com
大佬,求代码分享 ,十分感谢 13861618201@163.com
作者大大求代码在此谢谢 邮箱:wurui114114@163.com
作者大大求代码在此谢谢 邮箱:2878584718@qq.com
作者大大求代码在此谢谢 邮箱:1005525953@qq.com, 是用webview 模拟input文件输出吗,还是webview可以直接使用fileRender的readAsArrayBuffer?
求代码分享 ,十分感谢 ,21839583@qq.com
大佬们,可以给我也整一份代码吗,2216296981@qq.com 给常感谢
作者大大求代码在此谢谢 邮箱:2663282851@qq.com
大佬求代码。1059131354@qq.com
作者大大求代码在此谢谢 邮箱:2294850910@qq.com
大佬求代码。1059131354@qq.com
大佬求代码分享。 309637007@qq.com
大佬求代码分享。3655606@qq.com
大佬求代码分享。1343467494@qq.com
大佬求分享,2236684510@qq.com
作者大大,急需求分享。1059131354@qq.com
在uni-app中实现视频文件的分片上传,需要结合前端和后端共同完成。以下是一个简要的实现思路和代码案例,主要关注前端uni-app部分,假设后端已经提供了相应的分片接收接口。
前端实现步骤
-
选择视频文件:使用
<input type="file">
或uni-app的文件选择器组件来选择视频文件。 -
读取文件信息:通过
FileReader
获取视频文件的大小,以便计算分片大小。 -
分片上传:将视频文件按指定大小进行分片,并逐个上传到服务器。
-
合并分片:服务器接收完所有分片后,进行合并操作(这一步通常在服务器端完成,前端不需要处理)。
代码案例
// 假设在页面的data中定义了以下变量
data() {
return {
videoFile: null, // 存储选中的视频文件
chunkSize: 2 * 1024 * 1024, // 每片2MB
totalChunks: 0, // 总片数
uploadedChunks: 0, // 已上传片数
};
}
// 选择视频文件
chooseVideo() {
uni.chooseVideo({
success: (res) => {
this.videoFile = res.tempFilePath;
this.uploadVideo();
},
});
}
// 上传视频
uploadVideo() {
const file = uni.getFileSystemManager().getFile({
filePath: this.videoFile,
encoding: 'binary',
success: (res) => {
const fileSize = res.size;
this.totalChunks = Math.ceil(fileSize / this.chunkSize);
for (let chunkIndex = 0; chunkIndex < this.totalChunks; chunkIndex++) {
const start = chunkIndex * this.chunkSize;
const end = Math.min(start + this.chunkSize, fileSize);
const chunk = res.data.slice(start, end);
this.uploadChunk(chunk, chunkIndex);
}
},
});
}
// 上传分片
uploadChunk(chunk, chunkIndex) {
uni.uploadFile({
url: 'https://your-server.com/upload-chunk', // 替换为你的服务器接口
filePath: '', // 不需要填写,因为我们要直接上传二进制数据
name: 'file',
file: chunk, // 直接传入二进制数据
formData: {
chunkIndex: chunkIndex,
totalChunks: this.totalChunks,
fileName: this.videoFile.split('/').pop(), // 提取文件名
},
success: () => {
this.uploadedChunks++;
if (this.uploadedChunks === this.totalChunks) {
console.log('上传完成');
}
},
fail: (err) => {
console.error('上传失败', err);
},
});
}
注意事项
- 错误处理:需要添加更多的错误处理逻辑,如重试机制、上传进度显示等。
- 跨域问题:如果前后端分离部署,需要处理跨域请求问题。
- 安全性:确保上传接口的安全性,避免恶意文件上传。
上述代码是一个简化的实现,具体项目中可能需要根据实际情况进行调整和优化。