From 639c35696a8945a3941215e5861dc3c883b70ac6 Mon Sep 17 00:00:00 2001 From: Vaibhav Somani Date: Fri, 21 Mar 2025 10:43:38 -0400 Subject: [PATCH 1/2] fix: updating method name to match rfc for filename when downloading attachments --- .../io/micronaut/http/server/types/files/StreamedFile.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java b/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java index ac20937d4fe..45f06758477 100644 --- a/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java +++ b/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java @@ -139,7 +139,7 @@ public void process(MutableHttpResponse response) { static String buildAttachmentHeader(String attachmentName) { // https://httpwg.org/specs/rfc6266.html#advice.generating // 'filename' parameter is the fallback for legacy browsers, 'filename*' is the supported approach. - return "attachment; filename=\"" + sanitizeAscii(attachmentName) + "\"; filename*=utf-8''" + encodeRfc6987(attachmentName); + return "attachment; filename=\"" + sanitizeAscii(attachmentName) + "\"; filename*=utf-8''" + encodeRfc6266(attachmentName); } private static String sanitizeAscii(String s) { @@ -157,7 +157,7 @@ private static String sanitizeAscii(String s) { // this is mostly copied from netty QueryStringEncoder @SuppressWarnings({"java:S3776", "java:S135", "java:S127"}) // stay close to netty impl - static String encodeRfc6987(String s) { + static String encodeRfc6266(String s) { StringBuilder uriBuilder = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); From b88171277976fc26291e19145ece6920996288d2 Mon Sep 17 00:00:00 2001 From: Vaibhav Somani Date: Fri, 21 Mar 2025 10:51:15 -0400 Subject: [PATCH 2/2] fix: changing method name to rfc for character encoding from fileattachments rfc --- .../io/micronaut/http/server/types/files/StreamedFile.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java b/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java index 45f06758477..76e2e920d3b 100644 --- a/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java +++ b/http-server/src/main/java/io/micronaut/http/server/types/files/StreamedFile.java @@ -139,7 +139,7 @@ public void process(MutableHttpResponse response) { static String buildAttachmentHeader(String attachmentName) { // https://httpwg.org/specs/rfc6266.html#advice.generating // 'filename' parameter is the fallback for legacy browsers, 'filename*' is the supported approach. - return "attachment; filename=\"" + sanitizeAscii(attachmentName) + "\"; filename*=utf-8''" + encodeRfc6266(attachmentName); + return "attachment; filename=\"" + sanitizeAscii(attachmentName) + "\"; filename*=utf-8''" + encodeRfc5987(attachmentName); } private static String sanitizeAscii(String s) { @@ -157,7 +157,7 @@ private static String sanitizeAscii(String s) { // this is mostly copied from netty QueryStringEncoder @SuppressWarnings({"java:S3776", "java:S135", "java:S127"}) // stay close to netty impl - static String encodeRfc6266(String s) { + static String encodeRfc5987(String s) { StringBuilder uriBuilder = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i);