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