spring mvc 下载文件

spring mvc如何下载文件呢?

spring mvc怎么下载图片呢?

有两种方式:

方式一:使用注解@ResponseBody

 

Java代码  

  1. @ResponseBody  
  2.     @RequestMapping(value = "/download",produces="image/jpeg")  
  3.     public byte[] downloadFile(HttpServletRequest request, HttpServletResponse response,String contentType2,boolean isInline)  
  4.             throws IOException {  
  5.         byte[]bytes=FileUtils.getBytes4File("D:\\Temp\\cc.jpg");  
  6. //      response.addHeader("Content-Disposition", downloadType+";filename=\"a.jpg\"");  
  7.         WebServletUtil.setDownloadContentDisposition(isInline, "c.jpg", response);  
  8.         return bytes;  
  9.   
  10.     }  

 WebServletUtil.setDownloadContentDisposition 的实现如下:

 

 

Java代码  

  1. /*** 
  2.      * spring MVC下载文件设置的Content-Disposition 
  3.      * @param isInline 
  4.      * @param fileName 
  5.      * @return 
  6.      */  
  7.     public static String getContentDisposition(boolean isInline,String fileName){  
  8.         String downloadType=null;  
  9.         if(isInline){  
  10.             downloadType=Constant2.CONTENT_DISPOSITION_INLINE;  
  11.         }else{  
  12.             downloadType=Constant2.CONTENT_DISPOSITION_ATTACHMENT;  
  13.         }  
  14.         if(ValueWidget.isNullOrEmpty(fileName)){  
  15.             fileName="name_not_specified";  
  16.         }  
  17.         String format=downloadType+";filename=\""+fileName+"\"";  
  18.         return format;  
  19.     }  
  20.     /*** 
  21.      * 下载文件(或内联显示)时设置Content-Disposition 
  22.      * @param isInline 
  23.      * @param fileName 
  24.      * @param response 
  25.      */  
  26.     public static void setDownloadContentDisposition(boolean isInline,String fileName, HttpServletResponse response){  
  27.         response.addHeader(Constant2.CONTENT_DISPOSITION, WebServletUtil.getContentDisposition(isInline, fileName));  
  28.     }  

 注意:(1)一定要通过@RequestMapping注解的produces 设置response 的content type;

(2)设置应答头时要使用addHeader,而不是setHeader

 

方式二:使用ResponseEntity

Java代码  

  1. @RequestMapping(value = "/download3")  
  2.     public ResponseEntity<byte[]> download() throws IOException {  
  3.         HttpHeaders headers = new HttpHeaders();  
  4.         headers.setContentType(MediaType.IMAGE_JPEG);  
  5. //        headers.setContentDispositionFormData("inline", "dict.jpg");//attachment  
  6.         headers.set(Constant2.CONTENT_DISPOSITION,WebServletUtil.getContentDisposition(true, "dict.jpg"));  
  7.         return new ResponseEntity<byte[]>(FileUtils.getBytes4File("D:\\Temp\\cc.jpg"),  
  8.                                           headers, HttpStatus.CREATED);  
  9.     }  

Java代码  

  1. /*** 
  2.      * favicon.ico  
  3.      * @throws IOException  
  4.      */  
  5.     @RequestMapping(value = "/favicon.ico")  
  6.     public ResponseEntity<byte[]> faviconIco(HttpServletRequest request) throws IOException {  
  7.         HttpHeaders headers = new HttpHeaders();  
  8.         headers.setContentType(MediaType.IMAGE_PNG);  
  9.         String faviconIcoName="sms-4.ico";  
  10.         headers.set(Constant2.CONTENT_DISPOSITION,WebServletUtil.getContentDisposition(true, faviconIcoName));  
  11.         ///home/whuang/software/apache-tomcat-7.0.53/webapps/ROOT/  
  12.         String webappPath=null;  
  13.         if(WebServletUtil.isLocalIp(request)){//服务器在本机(访问ip为127或localhost)  
  14.             webappPath=WebServletUtil.getRealPath(request);  
  15.         }else{  
  16.             webappPath=DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING, "WEB-INF_LOC");  
  17.         }  
  18.         return new ResponseEntity<byte[]>(FileUtils.getBytes4File(  
  19.                 webappPath  
  20.                 +"WEB-INF/static/img/"+faviconIcoName),  
  21.                                           headers, HttpStatus.CREATED);  
  22.   
  23.     }  

  

注意:不要使用headers.setContentDispositionFormData 来设置Content-Disposition

时间: 2024-09-10 07:52:41

spring mvc 下载文件的相关文章

spring MVC 下载文件(转)

  springle MVC中如何下载文件呢? 比struts2 下载文件简单得多 先看例子: @ResponseBody @RequestMapping(value = "/download",produces="application/octet-stream") public byte[] downloadFile(HttpServletRequest request, HttpServletResponse response,String contentTy

Spring MVC 多文件上传大小限制及异常处理

Spring MVC  多文件上传大小限制及异常处理 (包括 MaxUploadSizeExceededException 异常) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 补充如下: h

Spring mvc,uploadifive 文件上传实践(转自:https://segmentfault.com/a/1190000004503262)

 1.前台页面: 引入js和css 全选复制放进笔记 <link type="text/css" rel="stylesheet" href="<%=basePath%>static/js/uploadifive/uploadifive.css" /> <script type="text/javascript" src="<%=basePath%>static/js/u

Spring MVC 之文件上传(七)

SpringMVC同样使用了apache的文件上传组件.所以需要引入以下包: apache-commons-fileupload.jar apache-commons-io.jar 在springAnnotation-servlet.xml中配置 1 <!-- 定义文件上传解析器 --> 2 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.Common

Spring MVC的RequestContextHolder使用误区

JShop简介:jshop是一套使用Java语言开发的B2C网店系统,致力于为个人和中小企业提供免费.好用的网店系统. 项目主页:http://git.oschina.net/dinguangx/jshop 在线演示: 前台: http://jshop.ofmall.org:81/jshop 后台: http://jshop.ofmall.org:81/jshop/manage/user/login (admin/123456)     在spring mvc中,为了随时都能取到当前请求的req

Java Spring MVC 上传下载文件配置及controller方法详解_java

下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!--配置下载返回类型--> <bean class="or

基于Spring Mvc实现的Excel文件上传下载

最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring mvc的项目如何搭建,传送门在这里. 这次就基于这个工程,继续实现上传下载的小例子.需要做下面的事情: 1 增加index.html,添加form提交文件 2 引入commons-fileupload.commons-io.jxl等工具包 3 创建upload download接口 4 注入mul

spring mvc java 把多文件打包成zip,并下载

再来一篇 /** * 压缩并导出文件 * @param zipPath 压缩文件临时路径 路径最后不要有 / * @param zipName 压缩为文件名 **.zip * @param createFilesPath 需要压缩的文件列表 * @param request * @param response * @return * @throws IOException */ public boolean downloadZip(String zipPath,String zipName,Li

[读后感]spring Mvc 教程框架实例以及系统演示下载

[读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 不要好意思,昨晚写的,睡着忘发了,后附是篇好文,赶紧w分享一下. 感脚着,俺好像做了