Django - Проверка размера загружаемого файла перед загрузкой

В Django у меня есть представление для загрузки файла. Я хочу ограничить возможный размер файла до 0.5MB. Вот как я это делаю сегодня:

class FileUploadView(BaseViewSet):
    parser_classes = (MultiPartParser, FormParser)
    serializer_class = FileUploadSerializer

def create(self, request, *args, **kwargs):
    file_serializer = self.get_serializer(data=request.data)
    file_serializer.is_valid(raise_exception=True)
    file_ = file_serializer.validated_data['file']

class FileUploadSerializer(serializers.ModelSerializer):
    file = MyFileField()
    MAX_UPLOAD_SIZE = 500000  # max upload size in bytes. 500000 = 0.5MB

    def validate_file(self, received_file):
        if received_file.file.size > self.MAX_UPLOAD_SIZE:
            raise BadRequestException(
                message='File size is bigger than 0.5MB',
                error_type=ExceptionTypeEnum.IMPORT_FILE_SIZE_TOO_BIG
            )

Это работает. Моя проблема в том, что файл должен быть сначала загружен на сервер, прежде чем оценивать размер. Я проверил другие возможные варианты

Я могу использовать DATA_UPLOAD_MAX_MEMORY_SIZE (который в настоящее время имеет значение по умолчанию 2.5MB), но я не хочу менять его на 0.5MB для всех запросов. Я предполагаю, что я могу использовать заголовок 'content-length', но, похоже, что он также используется только после загрузки. Мне интересно, есть ли способ отклонить большие файлы до их загрузки (в Backend).

Вернуться на верх