您的位置:首页 > 编程语言 > Java开发

Spring mvc实现文件上传

2016-07-28 23:06 477 查看
Spring mvc为文件上传提供了很直接的支持,这种支持时通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。
Spring mvc的配置文件中默认是没有装配MultipartResolver,因此在默认情况下是不能处理一个文件上传工作的。如果想要使用就必须在上下文中配置。
1、配置MultipartResolver
在Spring mvc的配置文件中加入以下配置


<bean id="multipartResovler" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8" p:maxUploadSize="5242880" p:uploadTempDir="upload/temp">


注意:defaultEncoding必须和用户jsp中的pageEncoding属性一致,以便正确的读取表单中的内容,uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后就会被自动清除。
2、编写控制器和文件上传表单

UserController.java


@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value="/uploadPage")
public String uploadPage(){
return "uploadPage";
}
@RequestMapping(value="/upload")
public String upload(@RequestParam("name") String name,@RequestParam("file") MultipartFile file){
if(!file.isEmpty()) {
file.transferTo(new File("d:/tem/" + file.getOriginalFilename()));
return "redirect:success.html";
} else {
return "redirect:fail.html";
}
}


Spring mvc会将上传的文件绑定到MultipartFile对象中。MultipartFile提供了获取上传文件的内容、文件名等,还可以通过tramsferTo()方法将文件存储到磁盘中。
负责上传文件的表单和一般的表单还是有区别的,表单类型必须是multipart/form-data类型。


<%@ page language="java" contentType="text/html;charest=UTF-8" pageEncoding="UTF-8" %>
<%@ tag lib prefix="c" uri="http://java.sun.com/jsp/jst/core" %>
<html>
<head>
<title>请上传头像</title>
</head>
<body>
<form method="post" action="<c:url value="/user/upload.html">" enctype="multipart/form-date">
<input type="text" name="name"/>
<input type="file" name="file"/>
<input type="submit"/>
</form>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvc spring