它一直是最前沿的心脏病。如何控制文件的大小,无法上传文件,文件下载时间太长,TCP直接断开连接???
为了促进每个人的有意义的学习,让我们将渲染图放在这里。
文件上传已实现,碎片上传,上传,上传,文件合并等。
为了促进测试,我上传了一个1G的大文件供下载。前端用于保存文件。有关详细信息
该项目的地址是:https://github.com/cll123456/deal-big-file需求
请阅读以下问题以下文章
为了计算文件哈希,主要有以下内容:。在这两种方法中,您可以将其与浏览器一起使用以实现它来实现它。
接下来,让我们计算文件的哈希,该库需要使用计算文件的哈希,
完整的计算文件哈希
当文件很小时,完整的计算文件哈希非常快,但是当文件大时,计算文件的哈希将非常慢并影响主过程???
采样计算文件哈希采样是要继续的文件的一部分。原则如下:
该设计是否发现它非常灵活?
基于这两个,他们还可以单独使用Web-Worker和requestIdleCallback来实现它。
在这里,我将配置我的计算机。将公司的计算机配置与具有8G内存的旧机器进行了比较。计算结果()哈希的结果如下:
结果很明显,无论您如何获得它,它都比样本慢。
您可能会说,不是在等待积分的文件碎片。实际上,您还可以根据网络速度实时调整碎片的大小!
???注意力 !!!如果像这样上传的文件,如果您断开连接的一半,则无法续订(每个时刻的网络速度都不同),除非每个上传都会带来块Sizesave
控制HTTP的请求可以改变想法,是否可以控制异步任务?
悬架请求实际上非常简单。本机中有一种方法。在发送请求时,在发送请求时,我们可以使用数组安装他,然后您可以亲自调用流产方法。
封装请求时,最好要求一个:
有请求数组后,您要暂时直接遍历请求数组,调用该方法
还原上传是确定已经存在的片段,而存在的片段不需要上传,也不存在继续上传。因此,我们想要的界面,文件的哈希,文件名,以及它是多少由文件上传。
请注意,在此处,您需要在验证剪辑的最终文件中删除剪辑的最终文件,以防止最后几个文件不完整上传。
合并文件是充分了解的,即合并了所有零件,但是有一个值得关注的地方,我们无法阅读内存中的所有文件,而是使用flow方法在阅读时合并和读取。编写文件。。在编写文件时,您需要确保订单,否则文件可能会损坏。在此部分中会有很多代码,感兴趣的学生可以看到源代码
对于文件下载,后端实际上非常简单,也就是说,返回流到达旅行,如下:
对于前端,我们需要使用一个库,也就是说,该库调用API来实现浏览器中流式文件的方式。然后,它非常易于使用???
原始:https://juejin.cn/post/7100086067264487432