如何从标题中的Content-Disposition获取文件名

发布于 2021-01-29 15:27:28

我正在使用Mechanize下载文件,响应头中有一个字符串:

Content-Disposition: attachment; filename=myfilename.txt

是否有一种快速的标准方法来获取文件名值?我现在想到的是:

filename = f[1]['Content-Disposition'].split('; ')[1].replace('filename=', '')

但这似乎是一种快速的解决方案。

关注者
0
被浏览
196
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先使用机械化获取标头的值,然后使用内置的cgi模块解析标头。

    展示:

    >>> import mechanize
    >>> browser = mechanize.Browser()
    >>> response = browser.open('http://example.com/your/url')
    >>> info = response.info()
    >>> header = info.getheader('Content-Disposition')
    >>> header
    'attachment; filename=myfilename.txt'
    

    然后可以解析标头值:

    >>> import cgi               
    >>> value, params = cgi.parse_header(header)
    >>> value
    'attachment'
    >>> params
    {'filename': 'myfilename.txt'}
    

    params是一个简单的字典,所以params['filename']您需要什么。文件名是否用引号引起来都没有关系。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看