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).