Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

如何解决大文件上传问题? PDF 下载


分享到:
时间:2023-02-26 10:19来源:http://www.java1234.com 作者:转载  侵权举报
如何解决大文件上传问题? PDF 下载
失效链接处理
如何解决大文件上传问题?  PDF 下载


本站整理下载:
提取码:7q0l 
 
 
相关截图:
 
主要内容:

如果你的项⽬涉及到⽂件上传的话,⾯试官很可能会问你这个问题。
我们先看第⼀个场景:⼤⽂件上传中途,突然失败!
试想⼀个,你想上传⼀个 5g 的视频,上传进度到 99% 的时候,特么的,突然⽹络断了,这个时候,你发
现⾃⼰竟然需要重新上传。我就问你抓狂不?
有没有解决办法呢? 答案就是:分⽚上传!
什么是分⽚上传呢? 简单来说,我们只需要先将⽂件切分成多个⽂件分⽚(就像我下⾯绘制的图⽚所展示
的那样),然后再上传这些⼩的⽂件分⽚。
前端发送了所有⽂件分⽚之后,服务端再将这些⽂件分⽚进⾏合并即可。
使⽤分⽚上传主要有下⾯ 2 点好处:
1. 断点续传 :上传⽂件中途暂停或失败(⽐如遇到⽹络问题)之后,不需要重新上传,只需要上传那些
未成功上传的⽂件分⽚即可。所以,分⽚上传是断点续传的基础。
2. 多线程上传 :我们可以通过多线程同时对⼀个⽂件的多个⽂件分⽚进⾏上传,这样的话就⼤⼤加快的
⽂件上传的速度。
前端怎么⽣成⽂件分⽚呢?后端如何合并⽂件分⽚呢?
前端可以通过 Blob.slice() ⽅法来对⽂件进⾏切割( File 对象是继承 Blob 对象的,因此 Fil
e 对象也有 slice() ⽅法)。
⽣成⽂件切⽚的示例代码如下:
RandomAccessFile 类可以帮助我们合并⽂件分⽚,示例代码如下:
何为秒传?
秒传说的就是我们在上传某个⽂件的时候,⾸先根据⽂件的唯⼀标识判断⼀下服务端是否已经上传过该⽂
件,如果上传过的话,直接就返回给⽤户⽂件上传成功即可。
⼀般情况下,这个唯⼀标识都是通过对⽂件的名称、最后修改时间等信息取 MD5 值得到的,这个可以通
过使⽤ spark-md5 这个库来⽣成。
需要注意的是:你不能根据⽂件名就决定⽂件是否已经上传到服务端,因为很可能存在⽂件名相同,但
是,内容不同的情况。另外,体验更好的是⽂件内容不变,唯⼀标识就不应该改变。因此,我们可以根据
⽂件的内容来计算 MD5 值。
另外,还存在⼀种情况是我们要上传的⽂件已经上传了部分⽂件切⽚到服务端。这个时候,我们直接返回
已上传的切⽚列表给前端即可

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐