diff --git a/src/main/java/com/interplug/qcast/util/ExcelUtil.java b/src/main/java/com/interplug/qcast/util/ExcelUtil.java index 44925563..007fa6b4 100644 --- a/src/main/java/com/interplug/qcast/util/ExcelUtil.java +++ b/src/main/java/com/interplug/qcast/util/ExcelUtil.java @@ -9,6 +9,8 @@ import java.beans.PropertyDescriptor; import java.io.*; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; import java.util.*; import lombok.RequiredArgsConstructor; @@ -104,7 +106,8 @@ public class ExcelUtil { InputStream is = new BufferedInputStream(templateStream); - response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xlsx\""); + String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + ".xlsx\""); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); try (OutputStream os = response.getOutputStream()) { diff --git a/src/main/java/com/interplug/qcast/util/PdfUtil.java b/src/main/java/com/interplug/qcast/util/PdfUtil.java index 2420dfd0..b1a01f7b 100644 --- a/src/main/java/com/interplug/qcast/util/PdfUtil.java +++ b/src/main/java/com/interplug/qcast/util/PdfUtil.java @@ -11,6 +11,7 @@ import com.itextpdf.kernel.utils.PdfMerger; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.*; +import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import lombok.RequiredArgsConstructor; @@ -81,7 +82,8 @@ public class PdfUtil { // 응답에 PDF 설정 response.setContentType("application/pdf"); - response.setHeader("Content-Disposition", "attachment; filename=\"" + pdfFileName + "\".pdf"); + String encodedFileName = URLEncoder.encode(pdfFileName, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\".pdf"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); try (java.io.OutputStream os = response.getOutputStream(); @@ -185,7 +187,8 @@ public class PdfUtil { // 응답에 PDF 설정 response.setContentType("application/pdf"); - response.setHeader("Content-Disposition", "attachment; filename=\"" + pdfFileName + "\".pdf"); + String encodedFileName = URLEncoder.encode(pdfFileName, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\".pdf"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); try (OutputStream os = response.getOutputStream();