jersey 实现文件下载(以ms word 为例)

原创 2015年07月10日 14:27:07

使用Jersey难免会碰到下载文件这样的需求,其实实现起来很简单,以微软word文档为例,代码片段如下:

@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")

用jersey实现文件下载

DownloadResource .javapackage cn.mykoo.ws.resources;import java.io.File;import java.io.FileInputStre...
  • hxpjava1
  • hxpjava1
  • 2011年05月10日 09:59
  • 6467

Jersey 文件下载

Jersey 文件下载Jersey实现文件下载有两种方式,一种是直接将文件作为响应体,一种是使用StreamingOutput对象作为响应体。一、使用文件对象作为响应体Jersey支持直接使用文件对象...
  • qq_28334711
  • qq_28334711
  • 2017年02月07日 15:16
  • 2248

jersey rest webservice实现上传下载

package com.teamhow.daoimpl; import java.io.BufferedInputStream; import java.io.File; import ja...
  • xiaoseqingchun
  • xiaoseqingchun
  • 2014年08月16日 21:42
  • 2662

CK2255-以慕课网日志分析为例 进入大数据 Spark SQL 的世界

CK2255-以慕课网日志分析为例 进入大数据 Spark SQL 的世界 新年伊始,学习要趁早,点滴记录,学习就是进步! 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序...
  • cadn_jueying
  • cadn_jueying
  • 2018年01月23日 22:29
  • 113

搜索引擎设计实用教程(2)-以百度为例

/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/搜索引擎设计实用教程(2)-以百度为例   之二:Spelling Checker拼写检查错误提示(以及拼音提示功能)    ...
  • malefactor
  • malefactor
  • 2005年11月26日 15:33
  • 7247

jersey实现文件下载示例

项目名称:jersey,路径前缀:jersey 只通过一个类
  • wow4464
  • wow4464
  • 2014年05月26日 11:22
  • 2291

数据库中视图相关(以mysql为例)

一. 概述 视图是从一个或多个表或视图中导出的表, 他也包含一系列带有名称的数据列和若干数据行。 然而视图并不同于数据库中真实存在的表。 视图为虚拟表, 其结构和数据建立在对数据库真实表的查询基础上。...
  • AcSuccess
  • AcSuccess
  • 2017年02月23日 15:44
  • 215

以慕课网日志分析为例 进入大数据 Spark SQL 的世界

每天都会分享各大视频资源站资源,大家一起学习 qq群:377215114
  • jianyue178826
  • jianyue178826
  • 2018年02月06日 08:51
  • 84

AngularJS + Jersey REST 文件下载

今天为一个客户的系统增加一个下载文件的功能,前端是AngularJS发起请求,后端用Jersey REST API返回文件,实现如下: 后端: @POST @Consumes(Media...
  • zhouyingge1104
  • zhouyingge1104
  • 2016年11月24日 14:40
  • 1031

webpack多页应用架构 - 实战webpack

怎么打包公共代码才能避免重复? 前言 与单页应用相比,多页应用存在多个入口(每个页面即一个入口),每一个入口(页面)都意味着一套完整的js代码(包括业务逻辑和加载的第三方库/框架等)。在文章《webp...
  • dan978146850
  • dan978146850
  • 2017年04月07日 15:11
  • 262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jersey 实现文件下载(以ms word 为例)
举报原因:
原因补充:

(最多只允许输入30个字)