← 中文资源

简体中文版本

Content-Disposition 文件名解析

解析 Content-Disposition 头,安全提取文件名,支持 RFC 5987。

阅读英文原文

示例说明

解析 Content-Disposition 头,安全提取文件名,支持 RFC 5987。本示例属于文件上传场景,提供可直接复制使用的python代码片段,附带边界条件与使用注意事项。

技术要点

  • filename* 优先 RFC 5987 编码
  • 三段格式 charset 语言 文件名
  • unquote 解码百分号编码字符

代码解读

上述代码实现了Content-Disposition 文件名解析的核心逻辑。解析 Content-Disposition 头,安全提取文件名,支持 RFC 5987。代码中包含输入校验、核心算法和结果返回三个部分。关键在于正确处理边界情况,例如空输入、非法参数和并发场景。filename* 优先 RFC 5987 编码,三段格式 charset 语言 文件名。这些设计确保代码在生产环境中的健壮性。

使用建议

在实际项目中使用本示例时,建议先理解Content-Disposition 文件名解析的适用场景与限制条件。unquote 解码百分号编码字符。根据具体业务需求调整参数配置,并编写单元测试覆盖正常路径与边界情况。本代码片段可直接集成到现有项目中,或作为参考实现自行扩展。

代码示例

from urllib.parse import unquote
import re

def parse_filename(header):
    if not header:
        return None
    m = re.search(r"filename\*=([^;]+)", header)
    if m:
        parts = m.group(1).split("'")
        if len(parts) == 3:
            return unquote(parts[2])
        return unquote(parts[-1])
    m = re.search(r'filename="?([^";]+)"?', header)
    if m:
        return m.group(1)
    return None