如果文件大小太小,为什么python-magic返回错误的mime类型?



如果文件大小小于5000字节(InMemoryUploadedFile(。 此代码不起作用

mime_type = magic.from_buffer(file.read(), mime=True)

它返回错误的mime_type。 例如,我有一个文件大小为 4074 字节的文件 cv.docx。 它返回一个mime_type:

'application/x-empty'

而不是

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

你能给我建议解决这个案子吗?

我也有这个问题。这很可能与文件大小无关,因为我也在 90 字节的文本/纯文本文件上测试了magic.from_buffer,并且它返回了正确的值。 问题是文件不知何故变成了空。就我而言,这是因为文件是一个流,而我已经从流中读取了(请记住,如果您从流中读取并再次读取,则第二次读取将从第一次读取完成的地方开始 - 与每次从文件的开头读取不同(。 这个例子来自烧瓶

mime_type1 = magic.from_buffer(request.stream.read(2048), mime=True) // returns text/plain
mime_type = magic.from_buffer(request.files["file"].stream.read(2048), mime=True) // returns application/x-empty because the stream has already been read from

如果不看到您早期的代码,很难准确诊断,但请检查您正在使用该文件的其他位置并将其注释掉。 您可能需要执行以下操作

file.seek(0)
mime_type = magic.from_buffer(file.read(), mime=True)

最新更新