背景
文件上传的后端服务不能修改,对单个文件有 10MB 的限制
需求
只用 js 绕开这个文件大小的限制,实现大文件的上传和下载,最好还能支持视频播放、客户端加密
想法
FormData 和 Blob.slice 可以获得文件分片,对每个 9.9MB 的分片当成一个文件上传,获得一个上传后的 url list
- https://deliciousbrains.com/using-javascript-file-api-to-avoid-file-upload-limits/
- https://developer.mozilla.org/en-US/docs/Web/API/FormData
- https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice
下载时需要以 arraybuffer 的方式拿到每个分片的数据,然后拼接多个 Array Buffer、转为 Blob 得到 Blob URL
- https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data
- https://gist.github.com/72lions/4528834
- https://stackoverflow.com/questions/44147912/arraybuffer-to-blob-conversion
- https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL