packagepwc.taxtech.atms.common;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Component;importjavax.servlet.http.HttpServletResponse;importjava.io.ByteArrayOutputStream;importjava.io.OutputStream;importjava.net.URLEncoder;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;@ComponentpublicclassResponseMessageBuilder{privatefinalLoggerlogger=LoggerFactory.getLogger(this.getClass());publicHttpServletResponsegetDownloadTmpResponseMessage(HttpServletResponseresponse,OutputStreamoutputStream,StringfileName)throwsException{fileName=fileName+DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(LocalDateTime.now())+".xlsx";response.setContentType("application/octet-stream;charset=UTF-8");response.setHeader("Access-Control-Expose-Headers","x-file-name");response.addHeader("Content-Disposition","attachment; filename="+fileName);try(OutputStreamresponseOutputStream=response.getOutputStream()){response.setHeader("x-file-name",URLEncoder.encode(fileName,"UTF-8"));ByteArrayOutputStreambyteArrayOutputStream=(ByteArrayOutputStream)outputStream;responseOutputStream.write(byteArrayOutputStream.toByteArray());}catch(Exceptione){logger.error("Error write data to response output stream");e.printStackTrace();thrownewException(e.getMessage());}returnresponse;}}