SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。在springmvc-config.xml进行配置文件如下:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件大小上限,单位为字节(10MB) -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
文件上传:
Spring MVC 为文件上传提供了直接的支持,这种支持是通
过即插即用的 MultipartResolver 实现的。Spring 用
Jakarta Commons FileUpload 技术实现了一个
MultipartResolver 实现类:CommonsMultipartResovler
• Spring MVC 上下文中默认没有装配 MultipartResovler,因
此默认情况下不能处理文件的上传工作,如果想使用 Spring
的文件上传功能,需现在上下文中配置 MultipartResolver
配置 MultipartResolver
• defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性
一致,以便正确解析表单的内容
• 为了让 CommonsMultipartResovler 正确工作,必须先
将 Jakarta Commons FileUpload 及 Jakarta Commons io
的类包添加到类路径下。
单文件上传
<h2>文件上传</h2>
<form action="#springUrl('/')springmvc/fileupload" enctype="multipart/form-data" method="post">
<table>
<tr>
<td>文件描述:</td>
<td><input type="text" name="desc"></td>
</tr>
<tr>
<td>请选择文件:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" value="上传"></td>
</tr>
</table>
</form>
后台接收代码
@RequestMapping("fileupload")
public String fileUpLoad(
@RequestParam("desc") String desc,
@RequestParam("file") MultipartFile file
){
if (file.isEmpty()) {
}
try {
file.transferTo(new File("D:\\"+file.getOriginalFilename()));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
多文件上传
<h2>多文件上传</h2>
<form action="#springUrl('/')springmvc/fileuploads" enctype="multipart/form-data" method="post">
<table>
<tr>
<td>文件描述:</td>
<td><input type="text" name="desc"></td>
</tr>
<tr>
<td>请选择文件:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td>文件描述:</td>
<td><input type="text" name="desc"></td>
</tr>
<tr>
<td>请选择文件:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" value="上传"></td>
</tr>
</table>
</form>
@RequestMapping("fileuploads")
public String fileUpLoad(
@RequestParam("desc") String[] desc,
@RequestParam("file") MultipartFile[] file
){
try {
for (MultipartFile multipartFile : file) {
multipartFile.transferTo(new File("D:\\"+multipartFile.getOriginalFilename()));
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}