码迷,mamicode.com
首页 > 编程语言 > 详细

springMVC入门-09

时间:2015-03-18 01:08:16      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

  这一节介绍SpringMVC对文件上传的支持,该功能支持需要使用到两个jar包:cmmons-fileupload-1.2.2.jar和commons-io-2.1.jar。

  在controller类中添加输入参数MultipartFile,通过HttpServletRequest来获取文件拷贝的真实路径,对应代码如下所示:

技术分享
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated Users user, BindingResult br,Model model, MultipartFile attach,HttpServletRequest req) throws IOException {// 一定要紧跟Validate之后写验证结果类
    if (br.hasErrors()) {
        model.addAttribute("user", user);
        // 如果有错误直接跳转到add视图
        return "user/add";
    }
        
    String realpath = req.getSession().getServletContext().getRealPath("/resources/upload");
        
    File f = new File(realpath+"/"+attach.getOriginalFilename());
    FileUtils.copyInputStreamToFile(attach.getInputStream(),f);
        
    users.put(user.getUsername(), user);
    return "redirect:/user/users";
}
View Code

  在前台页面添加input标签,设置type属性为file,并且把提交enctype属性值设置为multipart/format-data,对应add.jsp代码如下所示:

技术分享
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 此时没有写action,直接提交会提交给/add -->
<!-- 将表单中的值添加到modelAttribute的属性值user中 -->
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
    Username:<sf:input path="username"/><sf:errors path="username"/><br/>
    Password:<sf:password path="password"/><sf:errors path="password"/><br/>
    Nickname:<sf:input path="nickname"/><br/>
    Email:<sf:input path="email"/><sf:errors path="email"/><br/>
    Attach:<input type="file" name="attachs"/><br/>    
    <input type="submit" value="添加用户"/>
</sf:form>
</body>
</html>
View Code

  在hello-servlet.xml文件中设置文件上传需要的multipartReslver,对应代码如下所示:

技术分享
<!-- 设置multipartResolver才能完成文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5000000"></property>
</bean>
View Code

注:此处在前台add.jsp页面中上传文件的name属性值必须与controller类中的文件名对应的入参名称保持一致。

springMVC入门-09

标签:

原文地址:http://www.cnblogs.com/birdman-oscar/p/4346017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!