如果文件大小小于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)