在之前大文件的上传我都是通过 FilderReader 获取文件的 base64 然后转为 Blob 在一段一段截取上传, 但是这个方法有个弊端就是很大的文件的时候获取文件的 base64 会使整个浏览器崩溃卡死, 后面我去看了一下百度网盘的上传原理
我们可以看到百度是通过类似表单提交的方式上传文件的, 这样子似乎不需要把文件转化为 base64 减少了浏览器的开销. 那个让我们来动手做一个大文件上传吧
这里用 input 标签来获取需要上传的文件
获取到 file 对象以后我们就可以得到
这样一个对象里面就是文件的大小名字等信息
接下来我们可以通过 size 判断文件的大小, 对大文件进行切割上传处理
大文件上传的话我们需要告诉后端切割的总公块数和当前是那一块这样子后端可以对数据进行处理
这里我们通过 step 控制切割的大小, star 和 end 表示该次上传的文件开始个结束的数据位置, totalindex 是总共切割的个数, index 是当前上传的个数
以上就是我的大文件上传的方法~~~~
快过年了, 在这里提前祝大家新年快乐!!!!!!!!!!!!
来源: http://www.bubuko.com/infodetail-3385323.html