当我们在做文件上传的功能时,如果上传的文件过大,可能会导致长传时间特别长,且上传失败后需要整个文件全部重新上传。因此,我们需要前后端配合来解决这个问题。
最常用的解决方案就是 —— 切片上传。
这次我们主要从以下三个方面来学习关于“大文件上传”的操作:
切片上传,也叫分片上传。工作流程大致如下:
前端将一个大文件,拆分成多个小文件(分片);
前端将拆分好的小文件依次发送给后端(每一个小文件对应一个请求);
后端每接收到一个小文件,就将小文件保存到服务器;
当大文件的所有分片都上传完成后,前端再发送一个“合并分片”的请求到后端;
后端对服务器中所有的小文件进行合并,还原完整的大文件;
文件秒传,其实指的是文件不用传。如果某一个文件,在之前已经上传成功过,再次上传时,就可以直接提示用户“上传成功”。
工作流程大致如下:
断点续传可以分为两种场景:
用户点击“暂停”按钮时,终止文件的上传;再点击“续传”按钮时,继续上传剩下部分;
用户在上传文件切片的过程中,由于外部原因(网络等)导致上传失败;后续重新上传时,可以接着上次失败的进度继续上传;
两种场景的处理方式其实和“文件秒传”是一样的,工作流程大致如下: