一、文件上传三要素
1、form表单的提交方式为post
2、form表单的enctype="multipart/form-data"
3、表单项的type="file"
<form action="${pageContext.request.contextPath}/demo/upload"
method="post" enctype="multipart/form-data">
名称:<input type="text" name="username"><br>
文件:<input type="file" name="uploadFile"><br>
<input type="submit" value="提交">
</form>
二、单文件上传
1、导入fileupload和io坐标
<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>
2、配置文件上传解析器
<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件总大小-->
<property name="maxUploadSize" value="5242800"></property>
<!--上传单个文件的大小-->
<property name="maxUploadSizePerFile" value="5242800"></property>
<!--上传文件的编码类型-->
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
3、单文件上传实现
形参的名字与表单项的name的属性值要一致
@RequestMapping(value = "/upload",method = RequestMethod.POST)
public String upload(String username, MultipartFile uploadFile, HttpServletRequest request) throws Exception {
System.out.println("username="+username);
System.out.println("uploadFile="+uploadFile);
//获取上传文件的名称
String filename = uploadFile.getOriginalFilename();
uploadFile.transferTo(new File("D:\\Documents\\upload\\"+filename));
return "uploadPage";
}
三、多文件上传
多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[]即可。
<h1>多文件上传</h1>
<form action="${pageContext.request.contextPath}/demo/upload2"
method="post" enctype="multipart/form-data">
名称:<input type="text" name="username"><br>
文件1:<input type="file" name="uploadFiles"><br>
文件2:<input type="file" name="uploadFiles"><br>
文件2:<input type="file" name="uploadFiles"><br>
<input type="submit" value="提交">
</form>
代码实现
//多文件上传
@RequestMapping(value = "/upload2", method = RequestMethod.POST)
public String upload2(String username, MultipartFile[] uploadFiles) throws IOException {
for (MultipartFile uploadFile : uploadFiles){
String filename = uploadFile.getOriginalFilename();
uploadFile.transferTo(new File("D:\\Documents\\upload\\" + filename));
}
return "uploadPage";
}