springboot 文件上传实现原理总结

实现思路:

  • 分片:按照自定义缓冲区大小,将大文件分成多个小文件片段。

  • 断点续传:根据分片数量,给每个小文件通过循环起对应名称,当文件下载中断在续传时,判断小文件名称若存在则不存了,此时还需要判断文件若不是最后一个分片则大小为缓冲区固定大小,若没达到则证明小文件没传完需要重新传输。

  • 合并:下载时通过线程池创建任务进行下载或上传、当判断最后一个分片传完时,调用合并方法,根据之前定义的文件名称顺序进行合并,肯能出现最后一个分片传完,之前分片未传完的情况,需要使用while循环进行判断,多文件未传输完,则等待一会继续判断。

  • 大文件秒传:实际上是根据文件名称区一个唯一的md5值存储,传文件时进行判断,若存在则不传。

创建springboot项目,所需要的添加依赖


        
            org.springframework.boot
            spring-boot-starter
        
 
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-autoconfigure
        
        
            commons-fileupload
            commons-fileupload
            1.3.1
        
        
            commons-io
            commons-io
            2.4
        
     
        
            org.apache.httpcomponents
            httpcore
        
        
            org.apache.httpcomponents
            httpclient
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

编写测试环境看环境有没有搭建成功代码如下:


@Controller
public class UploadController {
    @RequestMapping("/test")
    @ResponseBody
    public String upload(HttpServletRequest request, HttpServletResponse response){
        return "搭建成功";
    }
}

页面主要代码


上传

你可能感兴趣的:(spring,boot,spring,java)