后台下载指定文件必定会用到流,

无论使用poi还是使用jxl导出excel都需要用到流
一种是outputstrean,另一种fileoutputstream
第一种:如果想要弹出保存的提示框必须加入下列三句
response.setContentType("application/vnd.ms-excel; charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename="+filename);
response.setCharacterEncoding("utf-8");
OutputStream os=response.getOutputStream();
在使用第一种的时候,我用的ajax请求。导致excel无法导出,最后我直接请求可以导出
原因是:ajax也用到了response.getWriter()方法 要将 数据结果回传,这里 我虽然 放弃了 回传的写入流writer 参数, 但是ajax还是会默认的去掉用,把流已经占用了,当然返回不了任何东西了。
第二种:
action中使用
FileOutputStream fos=new FileOutputStream(file);
此时可以使用ajax请求,在导出成功后返回文件路径,在页面中使用window.open(path);即可打开导出的excel文件

如果某些情况下,必须用到通过js的方式调用后台下载方法,可以借鉴第二种方式,在js中生成一个action方法:

  function showfile(fileId)  {

    //定义一个form表单,通过form表单来发送请求var form = $("<form>");

//设置表单状态为不显示
form.attr("style", "display:none");
//method属性设置请求类型为post
form.attr("method", "post");
//action属性设置请求路径,
//请求类型是post时,路径后面跟参数的方式不可用
//可以通过表单中的input来传递参数
form.attr("action", path + "/dbsx-dbsx-fileDownload.do");
$("body").append(form);//将表单放置在web中
//在表单中添加input标签来传递参数
//如有多个参数可添加多个input标签
var inputcs = $("<input>");
inputcs.attr("type", "hidden");//设置为隐藏域
inputcs.attr("name", "articleFile.id");//设置参数名称
inputcs.attr("value", fileId);//设置参数值
form.append(inputcs);//添加到表单中
form.submit();//表单提交

}

最新文章

  1. Unity3D中使用委托和事件
  2. python 使用字符串名调用类以及调用类方法名
  3. jquery技巧总结
  4. QtSpim实现MIPS指令的编写
  5. 基于Raft构建弹性伸缩的存储系统的一些实践
  6. 跑Java -jar somefile.jar时会发生什么(一个)
  7. Unity中提升像素字体清晰度
  8. [Tools] Wireshark Primer Tutorials
  9. ICPC模板编写 latex
  10. PM2.5环境检测系统的设计与分析
  11. 多态&amp;虚函数
  12. linux,日志查找技巧
  13. Zookeeper 配置集群环境详解
  14. PHP + Apche 在 window 系统下的环境搭建
  15. python3之模块io使用流的核心工具
  16. Javascript中的Array(数组) 、{}(映射) 与JSON解析
  17. vue-router.esm.js?fe87:16 [vue-router] Route with name &#39;page&#39; does not exist
  18. 刽子手游戏(UVa489)
  19. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
  20. HDFS基本操作的API

热门文章

  1. SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面
  2. SpringBoot 的过滤器
  3. centos7安装hadoop完全分布式集群
  4. nio原理和示例代码
  5. Docker笔记(三):Docker安装与配置
  6. 用Python玩数据-笔记整理-第二章
  7. 单元测试jest部署
  8. AT649 自由研究
  9. 基于surging 的stage组件设计,谈谈我眼中的微服务。
  10. 2019年7月20日 - LeetCode0003