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——国际化+上传+下载
每个星期一道菜,这个星期也不例外~~~ 一个软件,一个产品,都是一点点开发并完善起来的,功能越来越多,性能越来越强,用户体验越来越好……这每个指标的提高都需要切切实实的做点东西出来,好比,你的这个产品 ...
随机推荐
- spring mvc: Hibernate验证器(字段不能为空,在1-150自己)
spring mvc: Hibernate验证器(字段不能为空,在1-150自己) 准备: 下载Hibernate Validator库 - Hibernate Validator.解压缩hibern ...
- Java Applet基础
applet是一种Java程序.它一般运行在支持Java的Web浏览器内.因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序. 如下所示是独立的Java应用程序和app ...
- ABP 学习问题集锦
一:Update-Database : 无法将“Update-Database”项识别为 cmdlet.函数.脚本文件或可运行程序的名称的问题 解决: 这是因为没有引用EntityFramework命 ...
- 微信小程序------轮播图
swiper 微信小程序实现轮播图,和网站,APP的效果差不多,代码少,效率高. 先来看看效果图: 主要用swiper + swiper-item来实现 <view class='swiper' ...
- UVA-10054 The Necklace (欧拉回路)
题目大意:有n个珠子,珠子两边的颜色已知,问能否连成一条项链.(两个珠子可以项链当且仅当一个珠子的一边颜色与另一个珠子的另一边颜色相同). 题目分析:欧拉回路.将颜色视作节点,珠子当做边,问题变成了找 ...
- Project facet Java 1.8 is not supported by target runtime Apache Tomcat v7.0.
找到项目下的“.settings”
- Prism 4 文档 ---第5章 实现MVVM模式
MVVM模式有助于清楚的区分应用程序界面的业务层和展现层.保持一个清晰的应用程序逻辑和UI分离有助于处理开发和设计过程中大量的问题,同时,使得应用程序的测试,维护,和扩展更加容易.MVVM也可 ...
- 性能优化 - 查看 webpack 打包后所有的依赖关系(webpack 可视化工具)
查看 webpack 打包后所有组件与组件间的依赖关系,针对多余的包文件过大, 剔除首次影响加载的效率问题进行剔除修改,本次采用的是 ==webpack-bundle-analyzer(可视化视图查看 ...
- 浅析C#中ASP.NET页面的生存周期
一般来说,页要经历下表概述的各个阶段.除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页. 阶段 说明 页请求 页请求发生在页生命周期开始之前.用户请求页时,ASP.NET ...
- linux配置PHP环境!!(云服务器架设)
首先去阿里云或腾讯云购买主机(腾讯云现在有免费30天的云主机...) 购买好之后选择安装: 点登陆 就可以到linux的操作界面了 进入操作界面 输入root账号密码取得权限之后就可以开始配置环境了 ...