This commit is contained in:
Looly 2023-01-16 10:12:43 +08:00
parent 39369e8f6a
commit 3f811c9f82
2 changed files with 6 additions and 4 deletions

View File

@ -614,8 +614,9 @@ public class JakartaServletUtil {
*/ */
public static void write(final HttpServletResponse response, final InputStream in, final String contentType, final String fileName) { 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); final String charset = ObjUtil.defaultIfNull(response.getCharacterEncoding(), CharsetUtil.NAME_UTF_8);
response.setHeader("Content-Disposition", StrUtil.format("attachment;filename=\"{}\"", final String encodeText = URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset));
URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)))); response.setHeader("Content-Disposition",
StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset, encodeText));
response.setContentType(contentType); response.setContentType(contentType);
write(response, in); write(response, in);
} }

View File

@ -613,8 +613,9 @@ public class ServletUtil {
*/ */
public static void write(final HttpServletResponse response, final InputStream in, final String contentType, final String fileName) { 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); final String charset = ObjUtil.defaultIfNull(response.getCharacterEncoding(), CharsetUtil.NAME_UTF_8);
response.setHeader("Content-Disposition", StrUtil.format("attachment;filename=\"{}\"", final String encodeText = URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset));
URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)))); response.setHeader("Content-Disposition",
StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset, encodeText));
response.setContentType(contentType); response.setContentType(contentType);
write(response, in); write(response, in);
} }