jersey 实现文件下载(以ms word 为例)
2015-07-10 14:27
357 查看
使用Jersey难免会碰到下载文件这样的需求,其实实现起来很简单,以微软word文档为例,代码片段如下:
其中:@Produces("application/vnd.ms-word;charset=utf-8") 的 “application/vnd.ms-word” 官方文档并没有,但是官方文档有“application/vnd.ms-excel”,因此把excel改成word,试验的结果是成功的。另外 java.net.URLEncoder.encode(filename, "UTF-8") 是确保中文文件名不会乱码。
其他类型的文件下载实现相似,只需要修改@Produces 和文件名即可;
.txt ---> @Produces("text/plain")
.pdf ---> @Produces("application/pdf")
.png ----> @Produces("image/png")
.xls ----> @Produces("aapplication/vnd.ms-excel")
@GET @Path("download/document") @Produces("application/vnd.ms-word;charset=utf-8") public Response downloadDoc(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("id") String id){ String filepath = "D:/test.doc"; String filename = filepath.substring(filepath.lastIndexOf("/")+1); File downloadFile = new File(filepath); ResponseBuilder responseBuilder = Response.ok((Object) downloadFile); try { responseBuilder.header("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(filename, "UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return responseBuilder.build(); }
其中:@Produces("application/vnd.ms-word;charset=utf-8") 的 “application/vnd.ms-word” 官方文档并没有,但是官方文档有“application/vnd.ms-excel”,因此把excel改成word,试验的结果是成功的。另外 java.net.URLEncoder.encode(filename, "UTF-8") 是确保中文文件名不会乱码。
其他类型的文件下载实现相似,只需要修改@Produces 和文件名即可;
.txt ---> @Produces("text/plain")
.pdf ---> @Produces("application/pdf")
.png ----> @Produces("image/png")
.xls ----> @Produces("aapplication/vnd.ms-excel")
相关文章推荐
- 解决Ubuntu adb无法连接上android手机
- Hadoop入门进阶课程2--Hadoop2.X 64位编译
- WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制
- JSP——JavaBean
- 如何在不同的controller下设置不同的状态栏颜色
- GRE写作必备句型
- 2012年5月SAT香港真题解析
- 【JAVA】JAVA之HelloWorld
- Java基础——线程(二)
- 代理模式(Proxy Pattern)
- HDU 4632 Palindrome subsequence(区间dp)
- yii2学习笔记(五):获取表单输入信息并存到数据库
- phalcon重定向 页面跳转
- WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成
- 一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)
- wrapper 部署linux跟window
- android在一个activity中finish掉另外一个activity
- TweenMax.js 用法
- Robotium DialogUtils
- 通过IIS设置阻止某个IP或IP段访问你的网站