为什么magic.from_buffer返回None?

1 投票
1 回答
3431 浏览
提问于 2025-04-17 17:39

当我调用 magic.from_buffer 时,我得到了这个:

>>> import urllib2
>>> data = urllib2.urlopen('http://www.in.gov/judiciary/opinions/previous/wpd/05040501.bed.doc').read()
>>> len(data)
29696
>>> from lib import magic
>>> magic.from_buffer(data, mime=True)

在这个时候,我应该能得到 application/msword,但是我从最后一次调用中什么也没得到。我错过了什么呢?

在我的开发机器上这个是可以工作的,但在我的服务器上却失败了。我感到很困惑。

1 个回答

0

我不太确定这个问题的原因(可能是版本的问题),但我找到了一种解决办法,像这样:

mime = magic.from_buffer(data, mime=True)
if mime == None:
    # Workaround for issue with libmagic1==5.09-2 in Ubuntu 12.04. Fixed in libmagic 5.11-2.
    file_str = magic.from_buffer(data)
    if file_str.startswith('Composite Document File V2 Document'):
        mime = 'application/msword'

虽然这个办法不是最理想的,但在我能升级服务器并获得新版本的libmagic之前,这个办法能暂时解决问题。

撰写回答