File uploads в django 3
ДА! Это наконец-то случилось! Иван может петь победоносную песню, он так долго боролся за решение этого вопроса!
By default, if an uploaded file is smaller than 2.5 megabytes, Django will hold the entire contents of the upload in memory. This means that saving the file involves only a read from memory and a write to disk and thus is very fast. However, if an uploaded file is too large, Django will write the uploaded file to a temporary file stored in your system’s temporary directory.
Полная дока по новому аплоаду — Django | File Uploads | Django Documentation.







Не, ну все таки моих заслуг в этом особенно нет. Это все Майк Аксиак!
А что будет если отправить 200 файлов по 2.5MB каждый одним запросом? DoS по памяти? IMHO такие лимиты надо делать на общий CONTENT_LENGTH, а не на размер одного файла.
Вообще, новый патч и позволяет такое реализовать. Пишется upload handler, который считает (в базе/файле/памяти) общее количество данных и отсекает их в случае чего.
Хотя, такого не может быть. Поскольку сами джанговские процессы больше 2.5 МБ, память должна кончится существенно раньше :-). Но это уже отсекается на уровне настроек веб- или FastCGI-сервера.