SpringMvc的上传和下载
第一步:配置文件加入上传和下载的<bean>全部配置文件参考上上篇博文
<!-- 配置springMVC上传文件和下载文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property><!-- 编码格式,与jsp格式一致 -->
<property name="maxUploadSize" value="52428880"></property><!-- 文件上传的最大限制 5mb -->
<property name="uploadTempDir" value="upload/temp"></property><!-- 上传文件的临时路径。文件上传后,会自动消失 -->
<property name="maxInMemorySize" value="4096"/>
</bean>
第二步:WEB-INF/lib下必加入:commons-fileupload.jar与commons-io-1.4.jar二个文件
第三步:表单属性为: enctype="multipart/form-data"
单文件上传的Controller中的方法
/**
* SpringMVC的文件上传
* 【1】上传的文件,会自动被绑定到MultipartFile的对象中。该对象的api
* (1)byte[] getBytes()获取文件数据
* (2)String getContentType()获取文件的MIME类型,如image/pjpeg,text/plain等
* (3)InputStream getInputStream()获取文件流
* (4)Sring getName()获取表单中文件组件的名称
* (5)String getOriginalFilename()获取上传文件的原名
* (6)long getSize()获取文件的字节大小,单位为byte
* (7)boolean isEmpty():是否有上传的文件
* (8)void transferTo(File dest) 可以使用给文件将上传文件保存到一个目标目录下
* @Title: uploadMyPictrue
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param file 为前台form表单中<input type="file" name="file"/>中的name
* @return
* @return String 返回类型
* @author 尚晓飞
* @date 2014-10-31 下午2:01:23
*/
@RequestMapping("/uploadMyPictrue")
public String uploadMyPictrue(HttpServletRequest request,@RequestParam("file") MultipartFile file){
System.out.println("StudentController.uploadMyPictrue()");
boolean flag=file.isEmpty();
if(!file.isEmpty()){
String mimesString=file.getContentType();//获取mime类型
System.out.println("MiME:"+mimesString);//MiME:image/jpeg
long size=file.getSize();
System.out.println("size:"+size);//size:89067
String nameString=file.getName();
System.out.println("组件名称:"+nameString);//组件名称:file
String realName=file.getOriginalFilename();
System.out.println("文件原名:"+realName);//文件原名:图片.jpg //获取项目跟目录
String path=request.getSession().getServletContext().getRealPath("");
//拼接上传文件的存放目录
path=path+"/uploadfile";
//为上传文件起一个新名字
Integer index=realName.lastIndexOf(".");
String suffix=realName.substring(index);
//获取当前时间戳
long fileNam=System.currentTimeMillis();
String fileNames=fileNam+suffix;//新的完整文件名
String pathString=path+"/"+fileNames;
File file2=new File(pathString); if(!file2.exists()){
file2.mkdir();//不存在就创建文件
}
//将文件上传到项目制定的目录下 try {
file.transferTo(file2);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{ } }else{
//上传文件为空
}
return "/page/success";
}
多文件上传的controller中的方法
/**
* 多文件上传
* @Title: moreUploadFile
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param request
* @param response
* @param errors
* @return
* @return String 返回类型
* @author 尚晓飞
* @date 2014-10-31 下午3:12:16
*/
@RequestMapping("/moreUploadFile")
public String moreUploadFile(HttpServletRequest request,HttpServletResponse response ){
//将请求作用域转换成上传作用域
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//获取封装了多个上传文件的map
Map<String, MultipartFile> fileMap=multipartRequest.getFileMap();
//获取项目根目录
String rootPath=request.getSession().getServletContext().getRealPath("");
//拼接上传目录
rootPath=rootPath+"\\uploadfile";
//逐个上传文件
Set<String> set=fileMap.keySet();
for(String name:set){
//该name的值,为前台form表单中<input type="file" name="xxx">中的xxx
MultipartFile file=fileMap.get(name);
String filename=file.getOriginalFilename();
String fileName=file.getName();//获取组件名 此处的值也是xxx的值
File file2=new File(rootPath+"\\"+filename);
if(file2.exists()){
file2.mkdir();
}
try {
file.transferTo(file2);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } return "/page/success";
}
文件下载的controller中的方法
/**
* 文件下载
* @Title: downLoadFile
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param request
* @param response
* @return void 返回类型
* @author 尚晓飞
* @date 2014-10-31 下午3:53:16
*/
@RequestMapping("/downLoadFile")
public void downLoadFile(String name,HttpServletRequest request,HttpServletResponse response){
//模拟从数据库查处文件的名
String fileName=name;
//拼接文件全路径
String rootPath=request.getSession().getServletContext().getRealPath("\\uploadfile")+"\\"+name;
//生成文件
File file=new File(rootPath);
long fileLength =file.length();//获取文件的大小 //输入流和输出流
BufferedInputStream bis = null;
BufferedOutputStream bos = null; try {
//设置下载的参数配置
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("application/x-msdownload;");
String files= new String(fileName.getBytes("utf-8"), "ISO8859-1");
response.setHeader("Content-disposition", "attachment; filename="+files);
response.setHeader("Content-Length", String.valueOf(fileLength)); //添加输入流
bis=new BufferedInputStream(new FileInputStream(file));
//添加输出流
bos=new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(bis!=null){
bis.close();
}
if(bos!=null){
bos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
SpringMvc的上传和下载的更多相关文章
- SpringMVC文件上传和下载
上传与下载 1文件上传 1.1加入jar包 文件上传需要依赖的jar包 1.2配置部件解析器 解析二进制流数据. <?xml version="1.0" encoding=& ...
- ExtJS+SpringMVC文件上传与下载
说到文件上传.下载功能,网络上大多介绍的是采用JSP.SpringMVC或者Struts等开源框架的功能,通过配置达到文件上传.下载的目地.可是最近项目要用到文件上传与下载的功能,因为本项目框架采用开 ...
- SpringMVC文件上传和下载的实现
SpringMVC通过MultipartResolver(多部件解析器)对象实现对文件上传的支持. MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipart ...
- SpringMVC实现上传和下载
摘要 有些下载的错误解决来 java.lang.IllegalStateException: getOutputStream() has already been called for this re ...
- SpringMVC文件上传与下载
一.关键步骤 ①引入核心JAR文件 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apach ...
- springMVC文件上传与下载(六)
1..文件上传 在springmvc.xml中配置文件上传解析器 <!-- 上传图片配置实现类,id必须为这个 --> <bean id="multipartResolve ...
- SpringMVC 文件上传及下载
首先需要导入jar包 创建一个jsp页面 package cn.happy.Controller; import java.io.File; import javax.servlet.http.Htt ...
- n文件的上传和下载,struts2和springmvc
首先,struts2的上传下载的配置 因为struts2是配置的上传的拦截器,很简单的步揍就可以上传, 首先是配置struts的action映射 <!-- 4. 修改上传文件的最大大小为30M ...
- 学习SpringMVC——国际化+上传+下载
每个星期一道菜,这个星期也不例外~~~ 一个软件,一个产品,都是一点点开发并完善起来的,功能越来越多,性能越来越强,用户体验越来越好……这每个指标的提高都需要切切实实的做点东西出来,好比,你的这个产品 ...
随机推荐
- apollo各协议支持的客户端
apollo 源自 activemq,以快速.可靠著称,支持多协议:STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets,下面就STOMP, AMQP, M ...
- (转)浅谈SQL Server 对于内存的管理
简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...
- JSP 异常处理
JSP 异常处理 当编写JSP程序的时候,程序员可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方.JSP代码中通常有以下几类异常: 检查型异常:检查型异常就是一个典型的用户错误或者一个程序员 ...
- cJSON序列化工具解读一(结构剖析)
cJSON简介 JSON基本信息 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.易于人阅读和编写.同时易于机器解析和生成.是一种很好地数据交换语言. 官方 ...
- Graphviz(转载)
简述 原文: http://www.tuicool.com/articles/vy2Ajyu 本文翻译自 Drawing Graphs using Dot and Graphviz 1. 许可 Cop ...
- 创建mysql表
CREATE TABLE `t_play_product` ( `product_id` ) NOT NULL AUTO_INCREMENT COMMENT '主键ID,自增', `product_n ...
- 【待填坑】ajax问题
原生xhr怎么写? 怎么处理回调? 问:http状态码常见有哪些? 问:302是啥?304是啥?什么时候会返回304?你刚刚说浏览器缓存,具体缓存机制是怎么样的? 问:你刚刚说的是发起一个get请求, ...
- [转载]java获取word里面的文本
需求场景 开发的web办公系统如果需要处理大量的Word文档(比如有成千上万个文档),用户一定提出查找包含某些关键字的文档的需求,这就要求能够读取 word 中的文字内容,而忽略其中的文字样式.表格. ...
- linux中的redis缓存服务器
Linux中的Redis缓存服务器 一.Redis基础部分: 1.redis介绍与安装比mysql快10倍以上 *****************redis适用场合**************** 1 ...
- Java 进阶6 异常处理的陷阱
Java 进阶6 异常处理的陷阱 20131113 异常处理机制是 Java语言的特色之一,尤其是 Java的Checked 异常,更是体现了 Java语言的严谨性:没有完善的错误的代码根本就不会被执 ...