我正在使用python / Django上传文件,并得到两个不同的对象。当文件很小时,得到InMemoryUploadedFile
对象,而文件很大时,我得到了temporaryFileWrapper
。我正在使用magic
库检查文件的mime类型。
文件很大时,使用此代码即可正确mime type
file_name = self.cleaned_data.get('file')
file_mime= magic.from_file(file_name.file.name, mime=True)
supported_format= ['video/x-flv','video/mp4','video/3gpp','video/x-ms-wmv']
if file_mime in supported_format:
...........
但是当文件较小时,我会出错
_io.BytesIO' object has no attribute 'name
对于大文件
对于小文件
答案 0 :(得分:0)
根据Django的this doc,Django有两个上传文件处理程序MemoryFileUploadHandler
和TemporaryFileUploadHandler
。
MemoryFileUploadHandler
流到内存,TemporaryFileUploadHandler
流到磁盘。
我在我的TemporaryFileUploadHandler
中设置了setting.py
为默认
FILE_UPLOAD_HANDLERS= ["django.core.files.uploadhandler.TemporaryFileUploadHandler"]
我们还可以在Django中编写自己的自定义FileUploadHandler