Django File Upload With Size Limit

Handle file uploads in Django with size limit type validation and virus scan scheduling.

PythonFile Upload

Code

snippet
from django.core.exceptions import ValidationError
from django.conf import settings
import os

MAX_UPLOAD_SIZE = 10 * 1024 * 1024
ALLOWED_TYPES = {'image/png', 'image/jpeg', 'application/pdf'}

def validate_upload(file):
    if file.size > MAX_UPLOAD_SIZE:
        raise ValidationError(f'File too large: {file.size} > {MAX_UPLOAD_SIZE}')
    if file.content_type not in ALLOWED_TYPES:
        raise ValidationError(f'Unsupported type: {file.content_type}')
    ext = os.path.splitext(file.name)[1].lower()
    if ext not in {'.png', '.jpg', '.pdf'}:
        raise ValidationError(f'Invalid extension: {ext}')