SpringMVC上传文件
2023年11月15日大约 3 分钟约 548 字
基本介绍
- Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的 。 Spring 用 Jakarta Commons FileUpload 技术实现了一个 MultipartResolver 实现类:CommonsMultipartResovler。
- Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的 上传工作,如果想使用 Spring 的文件上传功能,需现在上下文中配置 MultipartResolver。
应用实例
引入 springmvc 文件上传需要的 jar 包

创建 web\fileUpload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="fileUpload" method="post" enctype="multipart/form-data">
文件介绍:<input type="text" name="introduce"><br>
选择文件:<input type="file" name="file"><br>
<input type="submit" value="上传文件">
</form>
</body>
</html>
修改 web.xml
配置中文过滤器,前面已经配过
<!--配置spring提供的过滤器,解决中文乱码问题-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
修改 springDispatcherServlet-servlet.xml
配置文件上传解析器
<!--配置文件上传需要的bean-->
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="commonsMultipartResolver"></bean>
创建 FileUploadHandler.java
package com.lzw.web.fileupload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
/**
* @author LiAng
* 处理文件上传的handler
*/
@Controller
public class FileUploadHandler {
//编写方法,处理文件上传的请求
@RequestMapping(value = "/fileUpload")
public String fileUpload(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws IOException {
//接收到提交的文件名
String originalFilename = file.getOriginalFilename();
System.out.println("上传的文件名是:" + originalFilename);
//得到要把上传文件保存到哪个路径[全路径:包括文件名]
String fileFullPath = request.getServletContext().getRealPath("/img/" + originalFilename);
//创建文件
File saveToFile = new File(fileFullPath);
//将上传的文件转存到 saveToFile
file.transferTo(saveToFile);
return "success";
}
}
此时会报错

修改 springDispatcherServlet-servlet.xml
配置文件上传解析器
<!--配置文件上传需要的bean-->
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver"></bean>
完成测试
Postman测试


