跳到主要内容

Spring MVC系列(15)-文件上传流程源码分析

前言

在上篇文档,我们分析了如何使用Spring MVC进行文件的上传和下载,也分析了一些常用的类和接口,那么这些请求和解析器是如何工作的呢?

核心类

Part接口

Part是javax.servlet.http包下的一个接口,servlet3.0加入,此类用于封装multipart/form-data请求时,上传文件的请求体。

public interface Part {


InputStream getInputStream() throws IOException;

String getContentType();

String getName();

String getSubmittedFileName();

long getSize();

void write(String var1) throws IOException;

void delete() throws IOException;

String getHeader(String var1);

Collection<String> getHeaders(String var1);

Collection<String> getHeaderNames();
}

ApplicationPart

ApplicationPart是Tomcat中的类,实现了Part接口,是文件上传时,会将文件封装为此对象。

它有两个重要的属性:

    private final FileItem fileItem;
private final File location;

FileItem封装了文件信息。
 
location表示文件实际对象,当上传文件时,会先存放到Tomcat的临时目录。

C:\Users\Administrator\AppData\Local\Temp\tomcat.9111.2463429038111242355\work\Tomcat\localhost\ROOT\upload_4b2ad82c_e0c0_45f3_8913_c2daa6234881_00000006.tmp