我们公司的项目用springboot搭建的,小朋友在做导出文件或者图片的时候,经常会报一下错误:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
(当然不影响业务正常导出)
错误日志信息:
在respone中已经调用了getOutputStream()方法。 说系统应该调用了多次;
其问题的原因是:
在写文件的时候,系统已经调用了getOutputStream()方法;如果接口还返回了其它数据,这样会造成2次调用getOutputStream(),所以报了此错误;
所有只要接口不再返回数据的话,系统就不会再报以上错误
错误案列:
@RequestMapping("exportPic")
public String exportPic(HttpServletResponse response){
response.getOutputStream()
BitMatrix matrix = qrCodeWriter.encode("PNG", BarcodeFormat.QR_CODE, 500, 500);
MatrixToImageWriter.writeToStream(matrix, "PNG", outputStream);
outputStream.close();
return "data";
}
修改后:
@RequestMapping("exportPic")
public void exportPic(HttpServletResponse response){
response.getOutputStream()
BitMatrix matrix = qrCodeWriter.encode("PNG", BarcodeFormat.QR_CODE, 500, 500);
MatrixToImageWriter.writeToStream(matrix, "PNG", outputStream);
outputStream.close();
}