###下载文件总是提示action文件【一定是response响应头设置无效(代码没执行)或者没设置】【response写会浏览器必须放在最后一句,保证响应头设置执行】

===============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);
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值