2016-07-13 7 views
1

При загрузке файла для поля, такие как этот:FileField: сила, с помощью TemporaryUploadedFile

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

Джанго использует либо 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',] 
+2

Мне нужно настроить этот только на конкретных областях. Может ли это применяться только к полю '' file''? – mimo