_io.BytesIO' 对象没有小文件的属性 'name'
_io.BytesIO' object has no attribute 'name' for small size file
我正在使用 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
对于大文件
对于小文件
根据 Django 的 this doc,Django 有两个上传文件处理程序 MemoryFileUploadHandler
和 TemporaryFileUploadHandler
。
MemoryFileUploadHandler
流到内存,TemporaryFileUploadHandler
流到磁盘。
我已经设置默认 TemporaryFileUploadHandler
我是我的 setting.py
FILE_UPLOAD_HANDLERS= ["django.core.files.uploadhandler.TemporaryFileUploadHandler"]
我们也可以在 django 中编写自己的自定义 FileUploadHandler
我正在使用 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
对于大文件
对于小文件
根据 Django 的 this doc,Django 有两个上传文件处理程序 MemoryFileUploadHandler
和 TemporaryFileUploadHandler
。
MemoryFileUploadHandler
流到内存,TemporaryFileUploadHandler
流到磁盘。
我已经设置默认 TemporaryFileUploadHandler
我是我的 setting.py
FILE_UPLOAD_HANDLERS= ["django.core.files.uploadhandler.TemporaryFileUploadHandler"]
我们也可以在 django 中编写自己的自定义 FileUploadHandler