如果文件大小太小,为什么pythonmagic返回错误的mimetype?

2024-10-06 11:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

它返回错误的mime\u类型。 例如,我有一个大小为4074字节的文件cv.docx。 它返回mime_类型:

'application/x-empty'

而不是

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

你能给我一些建议来解决这个案子吗


Tags: 文件代码fromtrue类型read字节application
1条回答
网友
1楼 · 发布于 2024-10-06 11:30:19

我也有这个问题。这很可能与文件大小无关,因为我已经在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)

相关问题 更多 >