DATA_UPLOAD_MAX_MEMORY_SIZE не ограничивает размер данных, отправляемых POST - PullRequest
0 голосов
/ 10 октября 2018

В моем проекте django значение DATA_UPLOAD_MAX_MEMORY_SIZE равно 2.5MB.Но я могу отправить +10MB данные base64 image на мой сервер, используя curl.
Как я могу ограничить запросы и почему этот env не работает в моем случае?

1 Ответ

0 голосов
/ 10 октября 2018

Основано на django Документы о DATA_UPLOAD_MAX_MEMORY_SIZE:

Максимальный размер в байтах, который может быть в теле запроса до вызова SuspiciousOperation (RequestDataTooBig).Проверка выполняется при доступе к request.body или request.POST и рассчитывается по общему размеру запроса, исключая любые загружаемые данные файла.

С помощью сериализатора django rest framework вы можете добавить валидатор к вашемуСериализатор и проверьте размер файла, как показано ниже:

from rest_framework import serializers

def file_validator(file):
    """
    file validator
    check max file size allowed for file
    :param file:
    :return:
    """
    max_file_size = 1024 * 1024 * 2  # 2MB
    if file.size > max_file_size:
        raise serializers.ValidationError(_('Max file size is {} and your file size is {}'.
                                          format(max_file_size, file.size)))


class FileSerializer(serializers.Serializer):
    file = serializers.FileField(validators=[file_validator])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...