###下载文件总是提示action文件【一定是response响应头设置无效(代码没执行)或者没设置】【response写会浏览器必须放在最后一句,保证响应头设置执行】
2017-11-13 16:29
681 查看
===============response向浏览器响应数据,无论是提示信息“操作成功”,还是文件下载。出现:
提示下载action文件。
===都遇到过。
===原因:【一定是response响应头设置无效(代码没执行)或者没设置】。前者很难找。
===【response写会浏览器必须放在最后一句,保证响应头设置执行】
@Action("SubAreaAction_exportXls")
public void exportXls() throws IOException{
ServletOutputStream outputStream = null;
HttpServletResponse response = ServletActionContext.getResponse();
try {
outputStream = response.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 一个流
// 两个头
// mime类型 Excel application/vnd.ms-excel
// 打开方式 默认是浏览器直接打开;=== inline 浏览器中打开;==== attachment 文件下载
//response.setContentType("application/vnd.ms-excel");//==######=下载。action文件。
String fileName="分区导出的数据.xls";
//====下两行解决文件名乱码
String agent = ServletActionContext.getRequest().getHeader("User-Agent");
fileName = FileUtils.encodeDownloadFilename(fileName, agent);
response.setHeader("content-disposition", "attachment;filename="+fileName);
//===下载。action文件。==######=下载。错误原因:setHeader()放在了导出 后面。header设置没执行。。。
//===【总之遇到这种问题,就是response的 header的问题。====代码顺序颠倒。。。。难找。】
service.exportXls(outputStream);
}
提示下载action文件。
===都遇到过。
===原因:【一定是response响应头设置无效(代码没执行)或者没设置】。前者很难找。
===【response写会浏览器必须放在最后一句,保证响应头设置执行】
@Action("SubAreaAction_exportXls")
public void exportXls() throws IOException{
ServletOutputStream outputStream = null;
HttpServletResponse response = ServletActionContext.getResponse();
try {
outputStream = response.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 一个流
// 两个头
// mime类型 Excel application/vnd.ms-excel
// 打开方式 默认是浏览器直接打开;=== inline 浏览器中打开;==== attachment 文件下载
//response.setContentType("application/vnd.ms-excel");//==######=下载。action文件。
String fileName="分区导出的数据.xls";
//====下两行解决文件名乱码
String agent = ServletActionContext.getRequest().getHeader("User-Agent");
fileName = FileUtils.encodeDownloadFilename(fileName, agent);
response.setHeader("content-disposition", "attachment;filename="+fileName);
//===下载。action文件。==######=下载。错误原因:setHeader()放在了导出 后面。header设置没执行。。。
//===【总之遇到这种问题,就是response的 header的问题。====代码顺序颠倒。。。。难找。】
service.exportXls(outputStream);
}
相关文章推荐
- 【TFS 2017】使用浏览器上传文件(TFVC)或者编辑代码,错误提示TF14098,需要对文件有PendChange 权限
- Content-Disposition 响应头,设置文件在浏览器打开还是下载
- 在ecplise每次新建一个php文件或者保存一个PHP文件的时候总是提示下载...
- 在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip)。一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致。但是在代码中,如何处理呢?很多控件的方法中都只提供了
- IIS7.5 配置自定义后缀的ASP文件 无法执行 总是提示下载的解决方法
- JavaWeb---设置content-disposition响应头,让浏览器下载文件
- Content-Disposition 响应头,设置文件在浏览器打开还是下载
- Response就是响应服务起器对浏览器请求的文件或数据,可以重定向,发送给浏览器,设置cookie
- 访问JSP文件或者Servlet文件时提示下载的解决方法
- php download.php实现代码 跳转到下载文件(response.redirect)
- IE打开网站总是提示下载文件
- 用Response.BinaryWrite这种方法在下载大于4MB的文件的时候浏览器报500错误的解决方法
- 下载文件时报错 "由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值" 解决方法
- Response.End,Resonse.Rediect,Server.transfer执行后会报异常(由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值)的问题解决方案
- ASP.NET下载文件出现提示框或者直接显示在浏览器中
- 注入下载文件的代码到IE进程然后执行下载的文件
- 服务响应文件SRF直接向浏览器传图片流的代码片段
- 在Struts的Action继承类中用response.getOutputStream()实现文件的下载时,在返回的ActionForward类时报错
- 每次打开IE8浏览器总是提示IE8初始设置,每次设置后,关了浏览器,再次打开又提示解决
- 服务响应文件SRF直接向浏览器传图片流的代码片段