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——国际化+上传+下载
每个星期一道菜,这个星期也不例外~~~ 一个软件,一个产品,都是一点点开发并完善起来的,功能越来越多,性能越来越强,用户体验越来越好……这每个指标的提高都需要切切实实的做点东西出来,好比,你的这个产品 ...
随机推荐
- Win10配Theano环境和Keras框架
网络上有各种各样的win7 64bit安装theano的方法,我也试过好多,各种各样的问题.因为之前没了解过MinGw等东西,所以安装起来比较费劲,经过不断的尝试,最终我按照以下过程安装成功. 其实过 ...
- MVC后台的几种跳转方法
//当服务器执行到Response.Redirect语句时,会立即中断页面的生命周期,直接向客户端返回信息,让客户端进行重定向操作.302(暂时重定向) Response.Redirect(" ...
- 为Spring Cloud Config Server配置远程git仓库
简介 虽然在开发过程,在本地创建git仓库操作起来非常方便,但是在实际项目应用中,多个项目组需要通过一个中心服务器来共享配置,所以Spring Cloud配置中心支持远程git仓库,以使分散的项目组更 ...
- Highcharts 向下钻取饼图
Highcharts 向下钻取饼图 配置 drilldown 配置 drilldown 用于向下钻取数据,通过点击某项深入到其中的具体数据. drilldown: { series: drilldow ...
- C#运算符笔记
C# 原来也可以进行向量运算,这里解决了一个为时已久的疑惑. operator struct Vector { public double x, y, z; public Vector(double ...
- Algorithm4.子数组求和贪心
子数组求和最大问题 20131011 问题描述 一个数组中,有整数也有复数,求这个数组的所有子数组中,求和最大的值. 这是一个动态规划问题,乍看上去没有什么简单的方法,把所有的情况列出来就可以了,但是 ...
- webapi在IIS发布后报Http 403.14 error
服务器是Windows Server 2008 R2 Enterprise IIS6.1 解决方法,修改web.config文件 1.在<system.webServer>配置 ...
- log4cpp总结
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- LeetCode OJ:Partition List(分割链表)
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- 【LeetCode 231_整数_位运算】Power of Two
bool isPowerOfTwo(int n) { && !(n & (n - )); }