Spring MVC学习笔记——文件上传
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.6(Spring MVC学习笔记)文件上传与下载
一.文件上传 实现文件上传多数是采用表单提交数据, 但对于进行文件上传的表单需要满足一下几个条件 1.表单的method设置为post 2.表单的enctype设置为multipart/form-da ...
- 关于我使用spring mvc框架做文件上传时遇到的问题
非常感谢作者 原文:https://blog.csdn.net/lingirl/article/details/1714806 昨天尝试着用spring mvc框架做文件上传,犯了挺多不该犯的毛病问题 ...
- 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传
作者:ssslinppp 1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...
- spring mvc中的文件上传
使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.x ...
- spring mvc 简单的文件上传与下载
上传文件有很多种方法,这里主要讲解的是spring mvc内提供的文件上传 前提使用:spring mvc 在这个之前我们需要把环境给配置好 1:springmvc的XML配置文件加上这一段就即可, ...
- spring MVC multipart处理文件上传
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势.Spring通过对Serv ...
- Spring MVC 全局异常处理&文件上传
Spring MVC 全局异常处理 使用SimpleMappingExceptionResolver实现异常处理 在welcome-servlet.xml进行如下配置: <bean class= ...
- Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)
准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...
- Spring MVC + Java 多文件上传及多文件中转上传
1.html内容 <div> <form method="post" action="/Cyberspace/main/informationBatch ...
随机推荐
- Entity Framework之IQueryable和list本地集合
我们来说一下Iqueryable集合和List等本地集合的区别,下面我们通过建立一个简单的例子来学习这个知识点,直接进入主题吧 1.首先对比一下两段代码?看一下有什么结果: (1) 第一段代码如图所示 ...
- LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置
----------------------------------------以下内容为笔者生产环境的监控,安装都是经过一步步测试的-------------------------------- ...
- JavaScript如何获取网页url中的参数
我们可以自定义一个公共函数来实现网页url中的参数获取,返回的是一个数组 GetUrlRequest: function () { var url = decodeURI(location.searc ...
- codegate-quals-2013-vuln100
最近想多看看题目积累些经验, -------- 程序分析 64位,保护措施都没开 gdb-peda$ checksec CANARY : disabled FORTIFY : disabled NX ...
- Git各大平台(win/Linux/Mac)图形化界面客户端大汇总
摘要: 介绍各平台下的图形化界面git客户端(本人并没有全部使用过),欢迎大家补充新的软件或者使用感受~ 一.TortoiseGit - The coolest Interface to Git V ...
- 【码在江湖】前端少侠的json故事(中)ng的json
ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...
- python3.5批量修改文件名
考虑到要手工修改许多的文件名太费时,而且网上下载的图片大多如下(完全不能满足强迫症) 就用python来代替我们完成这个过程直接贴上代码 #encoding:utf-8 import os def r ...
- 使用jenkins配置.net mvc网站进行持续集成三
前两篇讲解了Jenkins的配置和VS远程发布,现在还有一个问题,VS项目远程发布的时候,配置的是覆盖所有文件重生成的,而通常类似于配置文件这种东西,在本地开发环境和测试环境是不一样的.所以我们通常需 ...
- hibernate三种状态
转自:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 学过hibernate的人都可能都知道hibernate有三种状态,transien ...
- [.NET逆向] 破解NET的四大神器
原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不在话下了 ...