1.首先确定同一个文件是以该文件的md5值(前端通过spark-md5得到)为准
2.前端将文件传给web worker,利用解析出的bufferArray的slice方法切片
3.后端将要上传的文件生成md5的文件名,此方法必须同步,因为只能允许有唯一的文件名,后续的传同一个文件的人会收到当前已经有人在传那个文件的消息
4.后端维护一个hash表,存储的是对应文件md5以及各文件块
5.其他传同一个文件的人传的是带前缀的md5文件名,并且传递过程实时记录在hash表中
6.根据当前人数和上传进度情况hash表,调整各用户上传的同一个文件的切片位置,同时记录在hash表中
7,最后将所有用户上传的文件,根据上传进度hash表读取并拼接成最终的文件