FileField:强制使用 TemporaryUploadedFile
Posted
技术标签:
【中文标题】FileField:强制使用 TemporaryUploadedFile【英文标题】:FileField: force using TemporaryUploadedFile 【发布时间】:2016-11-15 16:54:51 【问题描述】:当为一个字段上传文件时:
file = FileField(upload_to='/path/')
Django 使用InMemoryUploadedFile
或TemporaryUploadedFile
。后者存储在磁盘上,可以使用temporary_file_path
属性访问其文件名。存储选择取决于文件大小。
如何覆盖此行为并始终以 TemporaryUploadedFile
的形式上传此模型字段?
我问这个的原因是因为我需要编写一个使用外部库的验证器,该库只能将文件路径作为输入,没有数据流。
【问题讨论】:
【参考方案1】:默认情况下upload handlers 是:
[
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
小于 2.5MB 的文件使用MemoryFileUploadHandler
处理。
所以只要在你的设置中说:
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.TemporaryFileUploadHandler',]
【讨论】:
我只需要在特定字段上进行调整。只能应用于我的file
字段吗?以上是关于FileField:强制使用 TemporaryUploadedFile的主要内容,如果未能解决你的问题,请参考以下文章
使用 model.FileField 在 Django 中保存之前修改文件名
如何通过 ModelForm 使用 FileField 添加新的 Django 模型实例?
如何在 Django 中使用 FileField 测试表单?
使用 FileField 在 Django 中保存原始文件名