文件下载之返回文件流(Controller)
博客专区 > 仲少 的博客 > 博客详情
文件下载之返回文件流(Controller)
仲少 发表于4年前
文件下载之返回文件流(Controller)
  • 发表于 4年前
  • 阅读 57
  • 收藏 1
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

 一、 
 
@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
博文 3
码字总数 6191
×
仲少
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: