java日常问题之excel文件下载功能中getOutputStream() has already been called for this response

从零到一:基于GeneMark-ES/ET的新基因组注释实战指南 本文提供了一份基于GeneMark-ES/ET的新基因组注释实战指南。详细介绍了从环境搭建、数据准备到核心运行的全流程,重点解析了ES(从头预测)与ET(结合RNA-Seq证据)两种模式的选择与操作,并分享了Perl模块依赖、并行处理等常见问题的解决方案,帮助生物信息学研究者高效完成基因预测工作。 阅读详情

erm...在做excel文件下载的时候出现了如下列的问题:



然后我在网上找了好久,大部分都是说要加上以下这两句代码:


  1. out.clear();  
  2. out = pageContext.pushBody();  

但是呢,我的这个状况并不是在前台插入了java代码,


	@RequestMapping("/downLoad")
	public void downLoad(HttpServletRequest req,HttpServletResponse res) throws IOException{
		//获取要下载的模板名称
		String fileName = req.getParameter("fileName");
		res.setHeader("Content-disposition","attachment;fileName="+fileName);
		//通知客服文件的MIME类型
		res.setContentType("application/vnd.ms-excel;charset=UTF-8");
		//获取路径
		String filePath = req.getSession().getServletContext().getRealPath("/WEB-INF/file")+"/"+fileName;
		filePath = filePath.replace("\\", "/");
		File file = new File(filePath);
		InputStream input = new FileInputStream(filePath);
		OutputStream out =res.getOutputStream();
		 byte[] b = new byte[(int)file.length()];
		int len;
		while((len=input.read(b))!=0){
			out.write(b,0,len);
		}
		input.close();
		
	} 

所以,出现getOutputStream() has already been called for this response这个问题的原因之一可能是len在读完数据之后为-1,而我这里的是不等于0,所以它又会进入while循环,但此时已经没有东西可以读了。

所以将(len=input.read(b))!=0改成(len=input.read(b))!= -1就好了,还有我这次的excel文件是先获取文件的长度再一次性读取的,这样当文件过大的时候可能内存就会崩溃了,以后得改成

byte b =  new byte[2048];




Qt 5.15.2静态编译避坑实录:MinGW 32位版从源码到Creator配置的全流程踩坑总结 本文详细介绍了Qt 5.15.2 MinGW 32位版本的静态编译全流程,包括环境准备、配置参数优化、编译过程监控及安装后配置。重点解决了静态编译中的常见问题,如参数顺序敏感、路径引号问题等,并提供了性能对比实测数据,帮助开发者高效完成静态编译。 阅读详情

相关推荐

WRF后处理:python cartopy绘制土地利用/土地分类图//python绘制WRF下垫面类型(以北极为例)

下垫面类型对于WRF的地表过程十分重要,而在我们研究WRF的地表过程之前,需要对输入的土地利用类型进行一些绘制,以便后续的修改。LU_MODIS21函数定义了绘制的土地类型、标签与对应色标,我们使用时,直接引用LU_MODIS21()即可返回。其实很简单,只要将你拥有的土地类型数据提取出来,将原本函数中的labels和C切片,重新定义色标再绘制即可。在这里,我将以北极地区为例,绘制北极地区的WRF下垫面数据,我使用的MODIS21这类。

weixin_43750300的博客 3857

导出Excel出现getOutputStream() has already been called for this response异常的原因

下jsp中出现此错误一般都是在jsp中使用了输出流。具体的原因就是在jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后有一段这样的代码finally {      if (_jspxFactory != null) _jspxFactory.rele

AsenWei的专栏 4091

八大核心深度学习算法详解:从CNN到Transformer的完整指南

深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统

aoe41606的博客 432

Easyexcel异常处理:getOutputStream() has already been called for this response

文章目录异常日志源码位置异常原因异常前代码调整后代码 异常日志 java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:582) ~[tomcat-embed-core-9.0.17.jar!/:9.0.17] at org.apache.cat

Colourful.的博客 5073

c#窗体应用(.NET Framework)项目对Yaml文件进行写入与读取,Yaml数据转换成json

用到的技术与版本准备工作Yaml数据在C#中进行定义对Yaml文件的读取与写入代码的添加窗体控件控制操作写入数据到Yaml文件读取Yaml文件数据Yaml数据转换成json改进——对yaml文件读取时根据yaml文件中的键进行获取,对c#中怎么取名字无关yaml文件中多个数据读取遇到的问题总结的小点参考的文章在对Yaml文件进行读取前,先将Yaml文件中的数据结构在c#中进行定义,以便后面更好的读取。这里对这四个类型进行举例(这里为了想看看这四个类型到Yaml文件的格式是什么样子的)

永远年轻 1587

sift、surf、orb 特征提取——三维重建

参考文章:[sift、surf、orb 特征提取及最优特征点匹配] 最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记。 SIFT 简介 SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。 实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的

bb_sy_w的博客 4362

在写导出excel 是报 getOutputStream() has already been called for this response grails grails

写了一个数据导出excel表格的功能,公司用的技术是:grails+groovy 但是我写excelUtil的时候还是用java写的; 能够正常导出excel表格;但是后台日志就是一直报错; getOutputStream() has already been called for this response grails:getOutputStream()已经使用过了; 简单一些就是使用了两次response返回结果; 参考文章:https://blog.youkuaiyun.com/TimerBin/article

qq_40297463的博客 852

Linux【实战】—— LAMP环境搭建 & 部署网站

由LinuxApacheMySQLPHP组成的一个web网络平台。

2201_75935630的博客 4980

java导出excel_程序员:超级简单,使用Hutool Java工具类库导出Excel

前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用。今天给大家介绍一款新工具,java工具类库Hutool。Hutool简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让使用者更轻松。Hutool中的工具...

weixin_39637614的博客 480

Aip1640、TM1640驱动程序

本文介绍了AIP1640/TM1640驱动芯片的编程实现,主要包括硬件接口定义和通信协议函数。通过宏定义配置时钟(CLK)和数据线(DIO)的GPIO控制,实现了I2C协议的启动、停止、字节发送等基本操作。核心函数AIP1640_Disp_Drive()完成显示驱动流程:先发送0x40命令设置地址自增模式,再发送0xC0起始地址和16字节显示数据,最后设置亮度参数。文中还包含5微秒延时函数、显示数据缓冲区定义,以及LED和数码管(SMG)的位映射注释说明。该代码适用于控制LED数码管显示,支持亮度调节功能。

zqx的博客 1401

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1552

getOutputStream() has already been called for this response

报错原因是流的管道里面已经没有数据了, outputStream = response.getOutputStream(); 如果这段代码出现在下边那段之前,在一个代码块中就会报错。因为已经get过了。 PrintWriter writer = response.getWriter() ...

ccmedu的博客 775

YOLOv11 | 一文带你深入理解ultralytics最新作品yolov11的创新 | 训练、推理、验证、导出 (附网络结构图)

ultralytics发布了最新的作品YOLOv11,这一次YOLOv11的变化相对于ultralytics公司的上一代作品YOLOv8变化还是很大的(YOLOv9、YOLOv10均不是ultralytics公司作品),其中改变的位置涉及到C2f变为C3K2,在SPPF后面加了一层类似于注意力机制的C2PSA,还有一个变化大家从yaml文件是看不出来的就是它的检测头内部替换了两个DWConv,在损失函数方面就没有变化了还是采用的CIoU作为边界框回归损失,下面带大家深入理解一下ultralytics最新作品

Snu77的博客 18万+

getOutputStream() has already been called for this response错误解决

getOutputStream() has already been called for this response错误解决

sxdfx的博客 4716

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java.lang.IllegalStateException: getOutputStream() has already been called for this response

1.springboot 提供下载excel接口(通过浏览器下载)控制台报错:下载文件成功:2.网上解答:response.getOutputStream()和 response.getWriter() 两个方法不能同时使用。建议加上: response.reset(); out.close(); 但是我的代码中都有该方法,调用接口,还是报错。 3.我的解决方案 找到下载功能的Java代码,controller 方法中有返回值,这就是病根 改成: 下载成功: 控制台打印:.........

qiaobing1226的博客 2665

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

项目踩坑之java.lang.IllegalStateException: getOutputStream() has already been called for this response

在做项目的时候,用到excel表格下载功能,虽然表格下载成功,但是控制台报如下错误 (java.lang.IllegalStateException: getOutputStream() has already been called for this response) java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.co

chd_sun的博客 2285

Java Web报错:getOutputStream() has already been called for this response解决方案

今天做了个导出excel表的功能。大概代码如下: ouputStream = response.getOutputStream(); wb.write(ouputStream); ouputStream.flush(); ouputStream.close(); 发现报错 getOutputStream() has already been called for this res...

coffee_fighter的博客 2403

getOutputStream() has already been called for this response 下载excel

public String exportExcel(){ try { //单机报表监控总结 //List danJiSumLs= getInterpretingDataManager().findDanJiReportSummarizeList(date,strPropertyId); //单机报表详情 List danJiLs=getInterpretingData

860

框架包含struts2 下载文件 时报错 getOutputStream() has already been called for this response

如标题所描述 错误:getOutputStream() has already been called for this response 解决方案 action的返回值置为null 后台代码 public String downExcel() throws IOException{         System.out.println("下载模板type:"+type); ...

sinrain1816的博客 856

java.io.IOException: Broken pipe & getOutputStream() has already been called for this response 问题处理

问题:在做excel导出时,断点调试,自己写的代码没有任何问题,从执行完自己的业务代码到返回客户端的过程中报了如下错误 [http-nio-8080-exec-1] 05/20-21:06:35,137 ERROR com.kr.media.framework.web.BaseExceptionResolver.doResolveHandlerMethodException(BaseExceptionResolver.java:33) - org.apache.catalina.connector.Cl

liyanlei的专栏 1830

java文件导出报java.lang.IllegalStateException: getOutputStream() has already been called for this respons

java后台写文件导出报错,找了很多文章都是在jsp中用内置对象out解决的,这里提供一种后台java解决办法 报错原因 是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突。即Servlet规范说明,不能既调用response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出IllegalStateException,因为在jsp.

梓隽的博客 1414

java.lang.IllegalStateException: getOutputStream() has already been called for

①在java代码Action中 在使用流的方法下载Excel的时候 经常会遇到如下错误: java.lang.IllegalStateException: getOutputStream() has already been called for this response 详解:在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处...

iteye_7017的博客 2816

getWriter() has already been called for this response报错

@RequestMapping(path = "/login",method = RequestMethod.POST) public ResultVo login(String username, String password, HttpServletResponse response, HttpServletRequest request) throws IOException { //必须不能写上这个不然必报错PrintWriter out = response.getWri

qq_43445553的博客 625

(生成excel)解决getOutputStream() has already been called for this response java getOutputStream()的问题

在jsp中用java语言生成excel时,虽然对功能没有影响,但在后台会报个小错误: getOutputStream() has already been called for this response java getOutputStream() 在网上搜了一下,找到了解决办法: out.clear(); out=pageContext.pushBody(); 加上这两行代码

漂泊小柒的专栏 6050
上一篇: easyUI日常问题之datagrid表格时间类型转换
下一篇: java之excel模板下载
chenLeiInTuling
博客等级 码龄10年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值