From 3f811c9f822c5da1ab86b9c21c5d61e310e1d54d Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 16 Jan 2023 10:12:43 +0800 Subject: [PATCH] fix code --- .../java/cn/hutool/extra/servlet/JakartaServletUtil.java | 5 +++-- .../src/main/java/cn/hutool/extra/servlet/ServletUtil.java | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java index ee7d2471c..6d80f8a84 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java @@ -614,8 +614,9 @@ public class JakartaServletUtil { */ public static void write(final HttpServletResponse response, final InputStream in, final String contentType, final String fileName) { final String charset = ObjUtil.defaultIfNull(response.getCharacterEncoding(), CharsetUtil.NAME_UTF_8); - response.setHeader("Content-Disposition", StrUtil.format("attachment;filename=\"{}\"", - URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)))); + final String encodeText = URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)); + response.setHeader("Content-Disposition", + StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset, encodeText)); response.setContentType(contentType); write(response, in); } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java index 64338a9be..c58da909f 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java @@ -613,8 +613,9 @@ public class ServletUtil { */ public static void write(final HttpServletResponse response, final InputStream in, final String contentType, final String fileName) { final String charset = ObjUtil.defaultIfNull(response.getCharacterEncoding(), CharsetUtil.NAME_UTF_8); - response.setHeader("Content-Disposition", StrUtil.format("attachment;filename=\"{}\"", - URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)))); + final String encodeText = URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)); + response.setHeader("Content-Disposition", + StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset, encodeText)); response.setContentType(contentType); write(response, in); }