前言
使用SpringMVC进行文件上传还是比较简单的,平时都在使用但是却很少做笔记,本文就大致记录一下。
文件上传客户端三要素
1、表单项 type=“file”
2、表单的提交方式 post
3、表单的enctype属性是多部份表单形式,即enctype=“multipart/form-data”
注意:
当使用enctype="multipart/form-data"时,request.getParameter()等方法都失效了,因为他们是获取键值对形式的请求参数
使用
导包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
配置参数
需要配置id=multipartResolver的解析器,属性可以根据情况设置。
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
</bean>
文件上传代码
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
<input name="name">
<input type="file" name="files">
<input type="submit">
</form>
@RequestMapping("upload")
@ResponseBody
public void upload(String name, MultipartFile files) throws Exception{
System.out.println(name);
String filename = files.getOriginalFilename();
String filePath = "d://"+filename;
files.transferTo(new File(filePath));
}
多文件上传代码
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
<input name="name">
<input type="file" name="files" multiple>
<input type="submit">
</form>
@RequestMapping("upload")
@ResponseBody
public void upload(String name, MultipartFile[] files) throws Exception{
for(int i = 0; i < files.length; i++){
String filename = files[i].getOriginalFilename();
String filePath = "d://a/"+filename;
files[i].transferTo(new File(filePath));
}
}