_io.BytesIO'对象对于小文件没有属性'name'

时间:2018-08-17 07:59:14

标签: django python-3.x file-upload temporary-files bytesio

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

对于大文件

enter image description here

对于小文件

enter image description here

1 个答案:

答案 0 :(得分:0)

根据Django的this doc,Django有两个上传文件处理程序MemoryFileUploadHandlerTemporaryFileUploadHandlerMemoryFileUploadHandler流到内存,TemporaryFileUploadHandler流到磁盘。

我在我的TemporaryFileUploadHandler中设置了setting.py为默认

FILE_UPLOAD_HANDLERS= ["django.core.files.uploadhandler.TemporaryFileUploadHandler"]

我们还可以在Django中编写自己的自定义FileUploadHandler