SpringMVC中文件上传功能
1、SpringMVC的话,只需要在SpringMVC的配置文件中,编写一个配置,配置文件上传解析器(MultipartResolver)
<!-- 文件上传的话,配置文件上传解析器 id必须是multipartResolver,看源码得来的 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- #{}这个是Spring的表达式语言,表示最大上传20m的文件 -->
<property name="maxUploadSize" value="#{1024*1024*20}"></property>
<!-- 这个表示将默认的字符编码设置为UTF-8 -->
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
2、在处理器方法上写一个@RequestParam(“headerimg”) MultipartFile file ,封装了当前文件的信息
单个文件上传:
/**
* @RequestParam("headerimg") MultipartFile file ,封装了当前文件的信息
* @param username
* @param model
* @param file
* @return
*/
@RequestMapping(value = "/upload")
public String upload(@RequestParam(value = "username",required = false) String username, Model model ,
@RequestParam("headerimg") MultipartFile file ) {
System.out.println("上传的文件信息:");
System.out.println("文件项的名字" + file.getName());
System.out.println("文件的名字" + file.getOriginalFilename());
//文件保存
File file1 = new File("D:\\fileupload\\"+file.getOriginalFilename());
try {
file.transferTo(file1);
model.addAttribute("msg", "<h1>文件上传成功了!</h1>");
} catch (IOException e) {
model.addAttribute("msg", "<h1>文件上传失败了!</h1>"+e.getMessage());
}
return "forward:/fileupload.jsp";
}
多个文件上传
/**
* 测试多个文件上传
* @param username
* @param model
* @param file
* @return
*/
@RequestMapping(value = "/uploadfiles")
public String uploads(@RequestParam(value = "username",required = false) String username, Model model ,
@RequestParam("headerimg") MultipartFile[] file ) {
System.out.println("上传的文件信息:");
for (MultipartFile multipartFile: file){
if (!multipartFile.isEmpty()){
//文件不为空,进行保存
try {
multipartFile.transferTo(new File("D:\\fileupload\\"+multipartFile.getOriginalFilename()));
model.addAttribute("mag", "<h1>多个文件上传成功了!</h1>");
} catch (IOException e) {
model.addAttribute("mag", "<h1>多个文件上传失败了!</h1>"+e.getMessage());
}
}
}
return "forward:/fileupload.jsp";
}
前端相关的代码
<%-- 单个文件上传 --%>
<h2>单文件上传</h2>
<form action="${ctp}/upload" method="post" enctype="multipart/form-data">
用户头像:<input type="file" name="headerimg"><br>
用户名:<input type="text" name="username"><br>
<input type="submit">
</form><br>
${msg}
<%--多文件上传--%>
<h2>多个文件上传</h2>
<form action="${ctp}/uploadfiles" method="post" enctype="multipart/form-data">
用户头像:<input type="file" name="headerimg"><br>
用户头像:<input type="file" name="headerimg"><br>
用户头像:<input type="file" name="headerimg"><br>
用户头像:<input type="file" name="headerimg"><br>
用户头像:<input type="file" name="headerimg"><br>
用户名:<input type="text" name="username"><br>
<input type="submit">
</form><br>
${mag}