Spring HTTP下载
(1)HTTP 协议可以在客户端和服务器之间传递任何类型的文件。
HTTP协议下载文档到客户端时候, 必须通过响应头Content-Type设置文件类型。
例如:
contentType=text/html
contentType=image/png
contentType=audio/mpeg
(2)如果需要指定下载名,可以通过响应头 Content-Disposition=attachment;filename="demo.xls"设置下载的文件名,写法如下:
response.setHeader("Content-Disposition", "attachment;filename="+fileName+".xls"); 指支持英文
如需设置中中文名,要进行中文转码。String fileName = java.net.URLEncoder.encode("泓凯账单信息", "UTF-8");
(3)Spring MVC 的控制器下载支持
@ResponseBody 注解不仅仅能够处理 JSON 数据, 可以自动处理其他数据:
- 如果返回值是一个JavaBean对象,就序列化JSON字符串反馈到浏览器
- 如果是byte[], 就将byte[] 数据填充到Response Body中发送到浏览器, 这时需要与 @RequestMapping配合
(4)案例一:动态生成png图片
//produces="image/png" 用于指示响应头中要包含Content-Type=image/png
@RequestMapping(value = "/png.do", produces = "image/png")
@ResponseBody
public byte[] demo() throws IOException {
BufferedImage img = new BufferedImage(100, 30, BufferedImage.TYPE_3BYTE_BGR);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "png", out);
byte[] data = out.toByteArray();
out.close();
return data;
}
案例二:导出Excel文件
//动态生成 Excel 文件: //excel的文件contentType格式
@RequestMapping(value="excel.do",produces="application/vnd.ms-excel")
@ResponseBody
public byte[] excel(
HttpServletResponse response)
throws IOException{ //指定下载时候的文件名
response.setHeader(
"Content-Disposition",
"attachment;filename=\"demo.xls\""); HSSFWorkbook book=new HSSFWorkbook();
HSSFSheet sheet = book.createSheet(
"出勤");
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("Hello World!"); ByteArrayOutputStream out =
new ByteArrayOutputStream();
book.write(out);
out.close();
byte[] data = out.toByteArray();
return data;
}
Spring HTTP下载的更多相关文章
- 2017/4/27-Gradle的配置与Spring的下载
Gradle的配置与Spring的下载 1.Gradle 1) 介绍 Gradle是一个基于Groovy的构建工具,类似Maven,但是比其更加简单轻便.它可以自动化地进行软件构建.测试.发布.部署. ...
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- [转]spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)
SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: h ...
- Spring官方下载地址
改版后的Spring官方网站下载地址找不到了,汗~~ 可以通过该链接下载对应的包:http://repo.spring.io/milestone/org/springframework/ Spring ...
- Spring jar 下载地址
Spring jar 下载地址 http://repo.springsource.org/libs-release-local/org/springframework/spring/
- spring 中国下载点
http://repo.spring.io/libs-release-local/org/springframework/spring/ spring 中国下载点
- spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)
spring官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: h ...
- spring 官方下载地址
SPRING官方网站改版后,建议都是通过Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦. 下给出Spring Framework jar官方直接下载路径: h ...
- spring的下载地址(转)
http://hi.baidu.com/jaimy_jie/item/d699cecdc5d3a354bdef6990 SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用 ...
随机推荐
- Python-7 列表list
#1 创建列表.向列表中添加元素 1) 列表名称.append(*) 2) 列表名称.extend([*,*,...]) 3) 列表名称.insert(位置,*) member = ['小甲鱼','小 ...
- Build subversion 1.8 with SSL on OS X Yosemite
mkdir -p /tmp/buildroot && cd /tmp/buildroot # Need to build the latest libtool and automake ...
- opendove中的odgw所需要的内核模块
最近组里要做opendove相关的东西,需要odgw的一个kernel-module. 以前安装过,但备份不见了,在此做个链接备忘 : https://git.opendaylight.org/ger ...
- 通过java反射,封装bean
上周有一个封装javabean的流程,成员变量有好多,一路写if(!=null){setXXX} 真的好麻烦,有时候一不小心还会漏掉,很是麻烦,就想到用反射的方法自动进行拼装bean. bean pa ...
- Find the largest K numbers from array (找出数组中最大的K个值)
Recently i was doing some study on algorithms. A classic problem is to find the K largest(smallest) ...
- GridView 使用方法总结
http://www.cnblogs.com/sufei/archive/2010/03/27/1698590.html 地址
- 解决错误 Cannot await in the body of a catch clause
解决错误 Cannot await in the body of a catch clause static async Task f() { ExceptionDispatchInfo ca ...
- Windows2008 R2 Enterprise离线安装IE10和VS2015过程记录
直接下载IE10,进行安装,提示需要联机下载更新: 在网上搜索到一篇文章(http://www.cnblogs.com/nbpowerboy/p/3383992.html),参考 以下载简体中文的Wi ...
- percona-toolkit工具包的安装和使用
1.安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境 # yum install -y perl perl-devel perl-Time-HiRes p ...
- Activex、OLE、COM、OCX、DLL之间的区别(转)
熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的.在具体介绍它们的关系之间,我们还是先明确组件(Co ...