Django: FILE_UPLOAD_MAX_MEMORY против DATA_UPLOAD_MAX_MEMORY - PullRequest
0 голосов
/ 27 февраля 2020

Я работаю с Django 2.2 и застрял с проверкой размера загружаемого файла. Я прочитал django документацию:

DATA_UPLOAD_MAX_MEMORY_SIZE
FILE_UPLOAD_MAX_MEMORY_SIZE

Я устанавливаю только DATA_UPLOAD_MAX_MEMOR, как упомянуто в (как указано в), как указано в () Документация:

Проверка выполняется при доступе к request.body или request.POST и рассчитывается по общему размеру запроса, исключая любые данные загрузки файла.

Но в моем проект также проверяет мой размер загружаемого файла в request.FILES.

Может кто-нибудь объяснить разницу между FILE_UPLOAD_MAX_MEMORY и DATA_UPLOAD_MAX_MEMORY? И как правильно их использовать?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

DATA_UPLOAD_MAX_MEMORY

Проверка выполняется при доступе к request.body или request.POST и рассчитывается по общему размеру запроса , исключая любые данные загрузки файла.

FILE_UPLOAD_MAX_MEMORY_SIZE

Максимальный размер (в байтах), который будет загружен, будет до того, как он будет передан в файловую систему. Если загружаемые файлы больше, чем FILE_UPLOAD_MAX_MEMORY_SIZE, данные файлов будут переданы в FILE_UPLOAD_TEMP_DIR https://docs.djangoproject.com/en/2.2/ref/settings/#file -upload-temp-dir

Я не думаю, что вы нужно установить FILE_UPLOAD_MAX_MEMORY_SIZE, потому что это размер кеша памяти.

0 голосов
/ 27 февраля 2020

FILE_UPLOAD_MAX_MEMORY загрузит содержимое файла в ОЗУ, если тело запроса или загруженный файл больше, чем FILE_UPLOAD_MAX_MEMORY, тогда файл будет сохранен в каталоге /tmp.

Вы можете ограничить размер файла на веб-сервере (Nginx), добавив client_max_body_size 20M;

Здесь 20 мегабайт - это максимальный объем данных, который может иметь тело запроса. Поэтому, если вы загружаете файл размером более 20 МБ, веб-сервер не примет его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...