From 1cbfd1a21747e08a15b46f58a12997c5e661048a Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 24 Oct 2025 21:00:34 +0800 Subject: [PATCH] add method --- .../hutool/v7/http/meta/HttpHeaderUtil.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/hutool-http/src/main/java/cn/hutool/v7/http/meta/HttpHeaderUtil.java b/hutool-http/src/main/java/cn/hutool/v7/http/meta/HttpHeaderUtil.java index bc7ba109b..4a3aafb07 100644 --- a/hutool-http/src/main/java/cn/hutool/v7/http/meta/HttpHeaderUtil.java +++ b/hutool-http/src/main/java/cn/hutool/v7/http/meta/HttpHeaderUtil.java @@ -26,6 +26,7 @@ import cn.hutool.v7.core.text.split.SplitUtil; import cn.hutool.v7.core.util.CharsetUtil; import cn.hutool.v7.core.util.ObjUtil; +import java.io.Serial; import java.io.Serializable; import java.nio.charset.Charset; import java.util.List; @@ -33,7 +34,7 @@ import java.util.Map; /** * HTTP头相关方法
- * 相关规范见:https://www.rfc-editor.org/rfc/rfc5987 + * 相关规范见:rfc5987 * * @author Looly * @since 6.0.0 @@ -56,6 +57,8 @@ public class HttpHeaderUtil { return headersIgnoreCase.get(name.trim()); } + // region ----- disposition + /** * 生成Content-Disposition头,用于下载文件
* 格式为: @@ -72,16 +75,34 @@ public class HttpHeaderUtil { return StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset.name(), encodeText); } + /** + * 生成Content-Disposition头,用于内嵌文件
+ * 格式为: + *
{@code
+	 *     inline;filename="example.txt";filename*=UTF-8''example.txt
+	 * }
+ * + * @param fileName 文件名 + * @param charset 编码 + * @return Content-Disposition头 + * @since 7.0.0 + */ + public static String createInlineDisposition(final String fileName, final Charset charset) { + final String encodeText = UrlEncoder.encodeAll(fileName, charset); + return StrUtil.format("inline;filename=\"{}\";filename*={}''{}", encodeText, charset.name(), encodeText); + } + // endregion + /** * 从Content-Disposition头中获取文件名。
- * 参考标准:https://datatracker.ietf.org/doc/html/rfc6266#section-4.1
+ * 参考标准:rfc6266#section-4.1
* 以参数名为`filename`为例,规则为: * * 按照规范,`Content-Disposition`可能返回多个,此处遍历所有返回头,并且`filename*`始终优先获取,即使`filename`存在并更靠前。
- * 参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition + * 参考:Content-Disposition * * @param headers 头列表 * @param paramName 文件参数名,如果为{@code null}则使用默认的`filename` @@ -123,7 +144,7 @@ public class HttpHeaderUtil { } /** - * 获取rfc5987标准的值,标准见:https://www.rfc-editor.org/rfc/rfc5987#section-3.2.1
+ * 获取rfc5987标准的值,标准见:rfc5987#section-3.2.1
* 包括: * *