大文件上传实现总结


大文件上传实现方式
  前端切片,分片上传,后端接收完切片后合并

 

判断切片上传完成
  a.每个切片都携带切片数量最大值,后端在接收到这个数量切片时合并
  b.前端判断上传完成后发送合并请求

 

后台合并切片
  a.切片携带顺序编号,后台按顺序号排列后合并
  b.切片携带size信息,后台可不按顺序合并,也可多线程合并

 

上传进度判断
  a.前端监听
  b.后端使用webSocket发送进度信息给前端

 

断点续传
  a.前端使用localstorage记录已上传的切片,缺陷是换了浏览器就不再有效

  b.后端保存已上传的切片的hash或md5(hash应该使用文件内容生成,不应使用文件名等易变的元素;文件过大,生成hash可能需要时间过程,可使用异步的方式),前端上传前从后台获取已上传的切片

 

文件秒传
  判断文件的hash,如果相同在返回上传成功

 

暂停上传
  暂停其实是取消整个切片的上传

 

恢复上传
  需要向后端请求已上传的切片信息,跳过这些切片

 

切片上传失败的处理
  hash或md5验证失败,不一致重传
  根据切片数判断切片缺失

 

前端切片原因
  http请求不限制文件大小,但外部可能有限制,比如网关、服务端设置post请求http头的文件长度
  前端、网关和服务端限制文件大小提示

 

分布式服务多个分配上传请求要打到同一个服务器
  pod亲和性
  nginx的ip_hash


扩展

  多切片、多文件并发上传

上一篇:hashcat与hydra


下一篇:使用helm创建elastic