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);