From 3ab75e5280267b8e972b8f43d752747d36dc1d68 Mon Sep 17 00:00:00 2001 From: iroqueta Date: Tue, 7 Nov 2023 16:27:58 -0300 Subject: [PATCH] It's ok to encode the file name in Content-Disposition header, but it's not neccesary to encode blanks. Issue: 105672 --- java/src/main/java/com/genexus/webpanels/WebUtils.java | 2 +- java/src/test/java/com/genexus/webpanels/TestWebUtils.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/java/src/main/java/com/genexus/webpanels/WebUtils.java b/java/src/main/java/com/genexus/webpanels/WebUtils.java index 39e4323b9..d7770b84b 100644 --- a/java/src/main/java/com/genexus/webpanels/WebUtils.java +++ b/java/src/main/java/com/genexus/webpanels/WebUtils.java @@ -329,7 +329,7 @@ public static String getEncodedContentDisposition(String value, int browserType) } String filename = value.substring(eqIdx + 1).trim(); - value = value.substring(0, filenameIdx) + String.format("filename*=UTF-8''%1$s; filename=\"%1$s\"", PrivateUtilities.URLEncode(filename, "UTF8")); + value = value.substring(0, filenameIdx) + String.format("filename*=UTF-8''%1$s; filename=\"%1$s\"", PrivateUtilities.URLEncode(filename, "UTF8").replace('+', ' ')); return value; } diff --git a/java/src/test/java/com/genexus/webpanels/TestWebUtils.java b/java/src/test/java/com/genexus/webpanels/TestWebUtils.java index a311df911..c5ab1fdbd 100644 --- a/java/src/test/java/com/genexus/webpanels/TestWebUtils.java +++ b/java/src/test/java/com/genexus/webpanels/TestWebUtils.java @@ -55,6 +55,12 @@ public void TestContentDispositionHeaderEncoding6() { doTest(contentDisposition, expectedContentDisposition); } + @Test + public void TestContentDispositionHeaderEncoding7() { + String contentDisposition = "attachment; filename=My file.pdf"; + String expectedContentDisposition = "attachment; filename*=UTF-8''My file.pdf; filename=\"My file.pdf\""; + doTest(contentDisposition, expectedContentDisposition); + } private void doTest(String contentDisposition, String expectedContentDisposition) { doTest(contentDisposition, expectedContentDisposition, HttpContextWeb.BROWSER_CHROME);