gpt4 book ai didi

Django python-magic 将上传的ppt、docx、word文件识别为 'application/zip'

转载 作者:行者123 更新时间:2023-12-05 03:15:23 25 4
gpt4 key购买 nike

我正在尝试识别上传文件的文件类型,经过搜索,我打算使用 python-magic 来检查文件的 mime 类型。

FileField 在我的模型中使用,ModelForm 用于帮助保存文件。

所有文件上传后,我在 python shell 中检查 mime 类型

我发现使用

magic.from_file("path_to_the_file", mime=True)

将为已保存的图像、txt、pdf 文件提供预期的 mime 类型。

但是,对于所有的 docx、ppt、excel 文件,它会将它们识别为 'application/zip'

谁能解释为什么会这样(django 自动将 ms 文件保存为 zip 文件??)。有没有什么好的方法可以让魔术按原样识别docx、ppt、excel文件?

非常感谢。

最佳答案

我最近也遇到了这个问题。 Python-magic 使用 Unix 命令 file,它使用数据库文件来识别文档(参见 man file)。默认情况下,此数据库不包含有关如何识别 .docx、.pptx 和 .xlsx 文件类型的说明。

您可以向 file 命令提供额外信息,以通过向/etc/magic 添加指令来识别这些类型(参见 https://serverfault.com/a/377792)。

这应该可以工作:

magic.from_file("path_to_the_file.docx", mime=True)

返回 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'

GitHub 上的 python-magic 使用说明中需要注意的一件事 - 这似乎不适用于 .docx、.pptx 和 .xlsx 文件类型(附加信息在/etc/magic 中):

magic.from_buffer(open("testdata/test.pdf").read(1024), mime=True)

返回'application/zip'

看来您需要为其提供更多数据才能正确识别这些文件类型:

magic.from_buffer(open("testdata/test.pdf").read(2000), mime=True)

返回 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'

我不确定所需的确切数量。

关于Django python-magic 将上传的ppt、docx、word文件识别为 'application/zip',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17779560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com