1. 请你实现一个大文件上传和断点续传?

  • 整体思路

    1. 前端:核心就是利用 Blob.prototype.slice 方法,和数组的 slice 方法相似,文件的 slice 方法可以返回 原文件的某个切片。预先定义好单个切片大小,将文件切分为一个个切片,然后借助 http 的可并发性,同时上传多个切片。这样从原本传一个大文件,变成了并发传多个小的文件切片,可以大大减少上传时间。由于是并发,传输到服务端的顺序可能会发生变化,因此我们还需要给每个切片记录顺序
    2. 后端:服务端负责接受前端传输的切片,并在接收到所有切片后合并所有切片
  • 问题

    1. 何时合并切片?(切片什么时候传输完成) 需求前端配合,两种实现方式:第一,前端在每个切片中都携带切片最大数量的信息,当服务端接受到这个数量的切片时自动合并。第二,可以额外发一个请求,主动通知服务端进行切片的合并。
    2. 如何合并切片? 使用 Nodejs 的 读写流(readStream/writeStream),将所有切片的流传输到最终文件的流里