package pwc.taxtech.atms.common; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Component public class ResponseMessageBuilder { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public HttpServletResponse getDownloadTmpResponseMessage(HttpServletResponse response, OutputStream outputStream, String fileName) throws Exception { 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 (OutputStream responseOutputStream = response.getOutputStream()) { response.setHeader("x-file-name", URLEncoder.encode(fileName, "UTF-8")); ByteArrayOutputStream byteArrayOutputStream = (ByteArrayOutputStream) outputStream; responseOutputStream.write(byteArrayOutputStream.toByteArray()); } catch (Exception e) { logger.error("Error write data to response output stream"); e.printStackTrace(); throw new Exception(e.getMessage()); } return response; } }