FileField:强制使用 TemporaryUploadedFile

Posted

技术标签:

【中文标题】FileField:强制使用 TemporaryUploadedFile【英文标题】:FileField: force using TemporaryUploadedFile 【发布时间】:2016-11-15 16:54:51 【问题描述】:

当为一个字段上传文件时:

file = FileField(upload_to='/path/')

Django 使用InMemoryUploadedFileTemporaryUploadedFile。后者存储在磁盘上,可以使用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 中保存原始文件名

如何使 django 中的 FileField 成为可选的?

如何使 django 中的 FileField 成为可选的?