uni-app分片上传实现困难详细描述
uni-app分片上传实现困难详细描述
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
bug描述:
app分片上传是一个很常见的需求,可是要在uniapp上面实现需求,真是举步维艰,我替广大开发者详细描述。
前提:上传到国内主流的OSS,七牛,阿里
- 首先通过
plus.gallery.pick或者uni.chooseVideo两个API获取到的file文件,调用file.slice得到的chunk分片,其属性fullPath指向原文件,所以直接上传该chunk的话,其上传的是原文件。
所以只有两条路
-
先来看看第一条路:将该文件缓存到运行内存或者复制一份切片chunk存到沙盒目录
- 通过
plus.io.FileReader()的reader.readAsDataURL(chunk)方法获取到base64的切片base64chunk - 将切片
base64chunk通过uni.base64ToArrayBuffer转为ArrayBuffer对象 - 然后通过
uni.request()上传二进制文件,此处无法使用uni.uploadFile和plus.uploader,因为不支持传二进制文件,所以没有很好的方式渲染上传进度 - 在安卓10以前的手机上,前面所述流程是能上传了。可是targetSdkVersion>=29的安卓10+,在第一步reader.readAsDataURL就报错了
- 自此我已放弃这条路了,后续只能将ArrayBuffer对象从运行缓存存到沙盒,然后读取该文件存的路径上传,传完后删除该片段,频繁的读写存储内存,很不友好
- 通过
-
然后看看我预想的第二条路,通过嵌入一个本地HTML网页,通过H5的切片上传完成需求,这虽然能实现,但是这曲线救国的路线,想想也是可悲
更多关于uni-app分片上传实现困难详细描述的实战教程也可以访问 https://www.itying.com/category-93-b0.html
8 回复
同楼主,我也是遇到了分片上传,解决了好多天,至今没有比较好的解决方案,直接切割的 file.slice,转化成base64 后和 源文件直接转化的base64不同,导致切片整合的文件损坏。。。
更多关于uni-app分片上传实现困难详细描述的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,我也遇到这个问题了,解决了么?有偿
Me too;我也是在做文件的分片,目前来看好像就只能自己写插件,插件市场没有合适的,被这玩意搞得要受不了了!真是垃圾玩意!
你好,有合适的方案吗
所以 uniapp app端能实现分片上传 和 分片下载吗。
建议官方出插件!


