前言
无论是面试还是实际工作,我们都会遇到大文件上传的问题。事实上,在我之前的面试中,也被问到上传大文件(Excel)如何处理,当时答的磕磕巴巴,直接导致整个面试以失败结束。 最近想起了整个事情,花了点时间,整理出这个demo,当然了,整篇文章,不仅仅讲思路过程,最后也会附送源码
前端:Vue.js Element-Ui
后端:node.js express fs
思路
前端
大文件上传
- 将大文件转换成二进制流的格式
- 利用流可以切割的属性,将二进制流切割成多份
- 组装和分割块同等数量的请求块,并行或串行的形式发出请求
- 待我们监听到所有请求都成功发出去以后,再给服务端发出一个合并的信号
断点续传
- 为每一个文件切割块添加不同的标识
- 当上传成功的之后,记录上传成功的标识
- 当我们暂停或者发送失败后,可以重新发送没有上传成功的切割文件
后端
- 接收每一个切割文件,并在接收成功后,存到指定位置,并告诉前端接收成功
- 收到合并信号,将所有的切割文件排序,合并,生成最终的大文件,然后删除切割小文件,并告知前端大文件的地址
其实说到这里,如果你看懂并且理解了以上的思路,那么你已经学会了大文件上传+断点续传的 80%。下面的具体实现过程,对你来讲,就是小意思...
大文件上传代码部分
本次html部分,我们使用了 Element-Ui 的组件,代码很容易理解
<el-upload
drag
action
:auto-upload="false"
:show-file-list="false"
:on-change="changeFile"
>
<i class="el-icon-upload">&

本文详细介绍了前端大文件上传和断点续传的实现思路及步骤,涉及Vue.js、Element-UI、Node.js和Express。前端通过将大文件转换为二进制流分片上传,后端接收并合并文件。通过这种方式,实现了大文件的高效上传和续传功能。

4030

被折叠的 条评论
为什么被折叠?



