我正在使用django接受来自用户的文件(主要是csv,text和excel)。 我需要检测文件类型以便进一步处理
使用python-magic我在读取文件和缓冲区时获得了不同的结果
import magic
magic.from_file('/testfiles/xls.xls',mime=True)
'application/vnd.ms-excel'
f = open('/testfiles/xls.xls','r')
magic.from_buffer(f,mime=True)
*** TypeError: object of type 'file' has no len()
magic.from_buffer(f.read(2048),mime=True)
'application/octet-stream'
f = open('/testfiles/csv.csv','r')
magic.from_buffer(f.read(1024),mime=True)
'text/plain'
magic.from_file('/testfiles/csv.csv',mime=True)
'text/plain'
获得了f.read(1024)
的想法
我意识到octet-stream
表示特定的应用程序文件类型,但我想验证它的优秀。
注意: Django为此类事物提供了一个名为content_type的属性,但文档声明它依赖于文件扩展名并且应该进行验证。
我的问题,识别上传文件类型的最佳方法是什么?