文档章节

文件下载之返回文件流(Controller)

仲少
 仲少
发布于 2014/08/13 10:40
字数 255
阅读 79
收藏 1
 一、 
 
@Get("downloadTeacherTemplate")
 
 public Object downloadTeacherTemplate(Invocation inv) throws Exception {
 
  Map<String,Object> map=systemDictService.getSystemDictByCode("UPLOADIFY_DIR");
 
  String root=(String) map.get("value");//获得文件的根目录,如:http://10.0.50.130/SaveResourse/ 
 
  File file = new File(root+TEACHER_TEMPLET_FILEPATH);//TEACHER_TEMPLET_FILEPATH:文件的相对路径 
 
  InputStream inputStream=null;
 
  inputStream = new FileInputStream(file);
 
  String fileName="教师导入模板.xls";
 
  String agent = inv.getRequest().getHeader("USER-AGENT");
 
  String CONTENT_TYPE = "";
 
  CONTENT_TYPE = CONTENT_TYPE + "; charset=UTF-8";
 
  // 以流的形式下载文件。
  // 清空response
  inv.getResponse().reset();
 
  if (agent.contains("Firefox")) {
 
   fileName = new String(fileName.getBytes("utf-8"), "iso8859-1");
 
  } else {
 
   fileName = URLEncoder.encode(fileName, "utf-8");
 
   fileName = fileName.replace("+", "%20");
 
  }
 
  inv.getResponse().setHeader("Content-Disposition", "attachment;filename=\"" + fileName);
 
  inv.getResponse().addHeader("Content-Length", "" );
 
  inv.getResponse().setContentType(CONTENT_TYPE);
 
  inv.getResponse().setHeader("Content-Transfer-Encoding", "binary");
 
  inv.getResponse().setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
 
  inv.getResponse().setHeader("Pragma", "public");
 
  inputStream = new FileInputStream(file);
 
  return inputStream;
 }



 二、
 
 @Get

 @Post

 public Object getFileStream(Invocation inv) throws IOException{

  PropertiesUtil propertiesUtil = new PropertiesUtil();

  String url = inv.getRequest().getRequestURI();

  Map<String,Object> uploadifyMap=systemDictDao.getSystemDictByClassCode("UPLOADIFY_URL");  //获得文件上传永久路径

  String root = String.valueOf(uploadifyMap.get("value"));

  String suffix = url.replaceAll("
http://www.yunedu.cc/SaveResourse/
", "");

  String path = root + suffix;

  File file = new File(path);

  String fileName = file.getName();

  String ext = fileName.substring(fileName.lastIndexOf(".")+1);

  inv.getResponse().reset();

  inv.getResponse().setHeader("Content-Disposition", "attachment;filename=\"" + fileName);

  inv.getResponse().addHeader("Content-Length", ""+file.length());

  inv.getResponse().setContentType(propertiesUtil.getProperty(ext));

  inv.getResponse().setHeader("Content-Transfer-Encoding", "binary");

  inv.getResponse().setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");

  inv.getResponse().setHeader("Pragma", "public");

  FileInputStream imputStream = new FileInputStream(file);

  return imputStream;

 }

© 著作权归作者所有

共有 人打赏支持
仲少
粉丝 1
博文 16
码字总数 6191
作品 0
厦门
SpringMVC,EasyUI,MyBatis通用导出EXCEL方案求解

本人想实现,通用的基于SpringMVC,EasyUI,MyBatis的EXCEL方案。SpringMVC,REST风格URL,MyBatis使用mapper方式,使用Spring注解。 所有EasyUI datagrid查询对应的都是@ResponseBody方式返回...

小伙伴新手上路
2013/09/27
3.3K
2
羊望/carson-web-mvc

Carson-Web-MVC Carson-Web-MVC是基于Spring MVC的轻量级扩展,借鉴了ASP.Net MVC及JFinal框架的思路,提供了一种更简洁的MVC路由模式。 该框架依赖于spring-webmvc和jackson。 URL路由无配置...

羊望
2017/02/05
0
0
Spring Boot + thymeleaf 实现文件上传下载

最近同事问我有没有有关于技术的电子书,我打开电脑上的小书库,但是邮件发给他太大了,公司又禁止用文件夹共享,于是花半天时间写了个小的文件上传程序,部署在自己的Linux机器上。 提供功能...

卡巴拉的树
2017/12/16
0
0
大文件上传,支持续传(ASP.NET MVC2+Flex)

实现原理 客户端读取文件流,把文件分成多份数据,然后一份一份向服务端发送。服务端接收数据,写入到服务端文件。 定义上传文件的服务端接口(ASP.NET MVC2) 主要接口 获取上传文件:服务端生...

彭博
2012/03/09
1K
0
使用Struts 2控制文件下载

一般来说,文件下载只需要直接在页面给出一个超级链接,该链接的href属性值等于要下载文件的文件名,就可以实现文件下载,如:checkbox.rar。但是这样下载存在着一些缺陷:如果该文件的文件名...

rob_rookie
2017/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
16分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部