1.实现文件上传首先需要导入Apache的包,commons-fileupload-1.2.2.jar和commons-io-2.1.jar

  实现上传就在add.jsp文件中修改表单

enctype="multipart/form-data"

<tr>
  <td>附件:</td><td><input type="file" name="attach"/></td>
</tr>

完整的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>
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
<table width="700" align="center" border="1">
<tr>
<td>用户名:</td><td><sf:input path="username"/><sf:errors path="username"/></td>
</tr>
<tr>
<td>用户密码:</td><td><sf:password path="password"/><sf:errors path="password"/></td>
</tr>
<tr>
<td>用户昵称:</td><td><sf:input path="nickname"/></td>
</tr>
<tr>
<td>用户邮箱:</td><td><sf:input path="email"/><sf:errors path="email"/></td>
</tr>
<tr>
<td>附件:</td><td><input type="file" name="attach"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="用户添加"/>
</td>
</tr>
</table>
</sf:form> </body>
</html>

2.在user-servlet.xml中配置上传文件

    <!-- 配置上传文件CommonsMultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
</bean>

3.在控制器中修改add()方法

	//在具体添加用户的时候,是POST请求,就访问以下代码
@RequestMapping(value="/add",method=RequestMethod.POST)
public String add(@Validated User user,BindingResult br,MultipartFile attach,HttpServletRequest req) throws IOException{//一定要紧跟@Validated之后写验证结果类
if(br.hasErrors()){
//如果有错误,直接跳转到add视图
return "user/add";
}
String realpath = req.getSession().getServletContext().getRealPath("/resources/upload"); //取得会话对象的路径
System.out.println(realpath);
File f = new File(realpath+"/"+attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), f);
System.out.println(attach.getName()+","+attach.getOriginalFilename()+","+attach.getContentType());
users.put(user.getUsername(),user); //把key和user对象放进Map中
return "redirect:/user/users";
}

还需要在resources文件夹下面添加upload文件夹

在表单中添加文件上传后如下图

如果要上传多个文件的话,修改add.jsp中的表单,注意是attachs和控制器中的attachs对应

			<tr>
<td>附件:</td><td><input type="file" name="attachs"/>
<input type="file" name="attachs"/>
<input type="file" name="attachs"/></td>
</tr>

修改控制器中的add()方法,把MultipartFile改为数组,attachs对应,@RequestParam("attachs")必不可少

	//在具体添加用户的时候,是POST请求,就访问以下代码
@RequestMapping(value="/add",method=RequestMethod.POST)
public String add(@Validated User user,BindingResult br,@RequestParam("attachs")MultipartFile[] attachs,HttpServletRequest req) throws IOException{//一定要紧跟@Validated之后写验证结果类
if(br.hasErrors()){
//如果有错误,直接跳转到add视图
return "user/add";
}
String realpath = req.getSession().getServletContext().getRealPath("/resources/upload"); //取得会话对象的路径
System.out.println(realpath);
for(MultipartFile attach:attachs){
if(attach.isEmpty()){ //检查上传多个文件的时候,每个文件是否为空,否则会在copy的时候出错
continue;
}
File f = new File(realpath+"/"+attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), f);
System.out.println(attach.getName()+","+attach.getOriginalFilename()+","+attach.getContentType());
}
users.put(user.getUsername(),user); //把key和user对象放进Map中
return "redirect:/user/users";
}

上面添加多个文件的时候,还检测了文件是否为空,为空的话就跳过

			if(attach.isEmpty()){
continue;
}

 注意:在这个简单的上传文件的例子中,如果上传的文件和已经存在的文件同名的话,会进行覆盖

Spring MVC学习笔记——文件上传的更多相关文章

  1. 1.6(Spring MVC学习笔记)文件上传与下载

    一.文件上传 实现文件上传多数是采用表单提交数据, 但对于进行文件上传的表单需要满足一下几个条件 1.表单的method设置为post 2.表单的enctype设置为multipart/form-da ...

  2. 关于我使用spring mvc框架做文件上传时遇到的问题

    非常感谢作者 原文:https://blog.csdn.net/lingirl/article/details/1714806 昨天尝试着用spring mvc框架做文件上传,犯了挺多不该犯的毛病问题 ...

  3. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  4. spring mvc中的文件上传

    使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.x ...

  5. spring mvc 简单的文件上传与下载

    上传文件有很多种方法,这里主要讲解的是spring mvc内提供的文件上传 前提使用:spring mvc 在这个之前我们需要把环境给配置好 1:springmvc的XML配置文件加上这一段就即可, ...

  6. spring MVC multipart处理文件上传

    在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势.Spring通过对Serv ...

  7. Spring MVC 全局异常处理&文件上传

    Spring MVC 全局异常处理 使用SimpleMappingExceptionResolver实现异常处理 在welcome-servlet.xml进行如下配置: <bean class= ...

  8. Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)

    准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...

  9. Spring MVC + Java 多文件上传及多文件中转上传

    1.html内容 <div> <form method="post" action="/Cyberspace/main/informationBatch ...

随机推荐

  1. 高级数据过滤(like)

    单字符过滤 '_' select * from T_Employee where FName like  '_erry' 多字符过滤 '%' select * from T_Employee wher ...

  2. [Linux 性能检测工具]PIDSTAT

    PIDSTAT NAME pidstat对linux任务的统计 语法 pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,...] ...

  3. SQL Server 2016 JSON原生支持实例说明

    背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON.尤其对于一些 ...

  4. Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)

    一.JDBC 连接Oracle 说明 JDBC 的应用连接Oracle 遇到问题,错误如下: ORA-12505,TNS:listener does not currently know of SID ...

  5. poll机制

    使用POLL机制代替linux输入子系统(input subsystem)之按键输入和LED控制中的异步通知,实现同样的效果. 1.代码 只简单修改input_subsys_test.c, input ...

  6. VS 插件ReSharper10 破解注册方法(转)

    ReSharper 10.0.0.1 Ultimate 完美破解补丁使用方法,本资源来自互联网,感谢吾乐吧软件站的分享. ReSharper是一款由jetbrains开发的针对C#, VB.NET, ...

  7. Git权威指南 书摘

    ##$ git add welcome.txtwarning: LF will be replaced by CRLF in welcome.txt.The file will have its or ...

  8. express中url的参数传递和获取

    1,传统get参数 浏览器通过这种形式的url访问localhost/userlist?id=xxx&name=yyy,这种方式可以通过req.query.id获取参数的值 router.ge ...

  9. Hibernate 查询方式(HQL/QBC/QBE)汇总

    作为老牌的 ORM 框架,Hibernate 在推动数据库持久化层所做出的贡献有目共睹. 它所提供的数据查询方式也越来越丰富,从 SQL 到自创的 HQL,再到面向对象的标准化查询. 虽然查询方式有点 ...

  10. 10大H5前端框架

    作为一名做为在前端死缠烂打6年并且懒到不行的攻城士,这几年我还是阅过很多同门从知名到很知名的各种前端框架,本来想拿15-20个框架来分享一下,但在跟几个前辈讨教写文章的技巧时果断被无情的打击了,所以这 ...