3

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

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

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

'application/x-empty'

代替

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

您能否建议我解决此案的任何建议?

4

1 回答 1

2

我也有这个问题。这很可能与文件大小无关,因为我也在 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)
于 2021-01-21T11:56:07.597 回答