从缓冲区中识别上传的文件类型

时间:2013-11-23 09:08:53

标签: python django

我正在使用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'

我从this question

获得了f.read(1024)的想法

我意识到octet-stream表示特定的应用程序文件类型,但我想验证它的优秀。

注意: Django为此类事物提供了一个名为content_type的属性,但文档声明它依赖于文件扩展名并且应该进行验证。

我的问题,识别上传文件类型的最佳方法是什么?

0 个答案:

没有答案