文档章节

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

仲少
 仲少
发布于 2014/08/13 10:40
字数 255
阅读 105
收藏 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.8K
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
ASP.netMVC文件下载的几种方法

第一种:最简单的超链接方法,标签的href直接指向目标文件地址,这样容易暴露地址造成盗链,这里就不说了 第二种:后台下载 在后台下载中又可以细分为几种下载方式 首先,在前台,我们需要一...

dcrenl
2018/10/11
0
0
SpringMVC之文件上传和下载

SpringMVC实现文件的上传和下载相对于JavaWeb阶段我们使用过servlet实现文件上传和下载操作;而SpringMVC实现了对上传操作的直接支持,提供了解析器。提供了一些对文件操作的方法,使得文件上...

TyCoding
2018/09/01
0
0
Spring Boot + thymeleaf 实现文件上传下载

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

卡巴拉的树
2017/12/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云vpc、快照、镜像、重置密码_重启_关机、磁盘扩容

VPC 专有网络VPC(Virtual Private Cloud)是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、负载均...

李超小牛子
16分钟前
0
0
阿里高级技术专家:研发效能的追求永无止境

背景 大约在5年前,也就是2013年我刚加入阿里的时候,那个时候 DevOps 的风刚吹起来没多久,有家公司宣称能够一天发布几十上百次,这意味着相比传统软件公司几周一次的发布来说,他们响应商业...

阿里云官方博客
44分钟前
1
0
Android 的 ViewModel 机制源码解析

Android ViewModel 的好处是会随 Activity 销毁调用它的 clear() 方法。 我们分析一下它是怎么做到的。 1. 例子使用: a、 创建类 TestMvvmViewModel 继承 ViewModel,重写 onCleared() ,把...

亭子happy
55分钟前
2
0
WEB 开发总结

事务处理 事务的4个基本特征 1.Atomic(原子性),事务中包含的操作被看做是一个整体的业务单元,这个业务单元中的操作要么全部成功,要么全部失败,不会出现部分成功,部分失败的场景。 2....

北漂的我
今天
3
0
thinkphp5 利用七牛云 将amr格式语音文件转为mp3

$card_id 是我的本地的文件 将问价名字的后缀名去掉注意access_token的有效期public function ceshi1($card_id){ $mediaid = substr($card_id, 0, -4); $accessKey = ...

小小小壮
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部