Лучший способ проверки загружаемых пользователем файлов в django

Какой лучший способ проверки загружаемых пользователем файлов, как по размеру, так и по типу?

from django.core.exceptions import ValidationError

def validate_file_size(value):
    filesize= value.size
    
    if filesize > 10485760:
        raise ValidationError("The maximum file size that can be uploaded is 10MB")
    else:
        return value



class File(models.Model):
    name= models.CharField(max_length=500)
    filepath= models.FileField(upload_to='files/', verbose_name="", validators=[validate_file_size])

    def __str__(self):
        return self.name + ": " + str(self.filepath)

Вы также можете проверить mimetype файла и его суффикс. Например:

from pathlib import Path
from django.conf import settings

def file_validator(value):
    if value.size > settings.MAX_FILE_SIZE:
        raise ValidationError("File is too big.")
    if not Path(str(value)).suffix.strip().lower() in ["list of strings of valid suffix"]:
        raise ValidationError("File does not look like as ....")
    mime_type = mimetypes.guess_type(str(value))[0]
    if mime_type not in ["list of strings of valid mime types"]: # image/png, image/jpeg and etc
        raise ValidationError("Invalid mime type.")
Вернуться на верх