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

Я читал документацию по django и посты здесь, на stackoverflow, но все еще не уверен, как это сделать. Пока что вот мой код:

forms.py:

def validate_file(file):
    # Validate if no file submitted
    if not file:
        #raise ValidationError("No file submitted")
        raise ValidationError("Error")

    # Check file size (5 GB limit)
    max_size = 5 * 1024 * 1024 * 1024  # 5 GB in bytes
    if file.size > max_size:
        #raise ValidationError("The maximum file size that can be uploaded is 5GB")
        raise ValidationError("Error")
    
    # Define allowed file types and their corresponding MIME types
    allowed_types = {
        # Audio formats
        'wav': ['audio/wav', 'audio/x-wav'],
        'mp3': ['audio/mpeg', 'audio/mp3'],
        'mpga': ['audio/mpeg'],
        'aac': ['audio/aac'],
... 

class UploadFileForm(forms.Form):
    file = forms.FileField(validators=[validate_file])

views.py:

def transcribe_Submit(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            uploaded_file = request.FILES['file']

            session_id = str(uuid.uuid4())
            request.session['session_id'] = session_id

            try:
                transcribed_doc, created = TranscribedDocument.objects.get_or_create(id=session_id)
                transcribed_doc.audio_file = uploaded_file
                transcribed_doc.save()
...

modesl.py:

class TranscribedDocument(models.Model):
    id = models.CharField(primary_key=True, max_length = 40)
    audio_file = models.FileField(max_length = 140, upload_to='example_upload_url/', null= True)
...

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

Сайт загружается непосредственно на DigitalOcean Spaces без хранения файлов на сервере, а максимальный размер загружаемого файла, разрешенный для моего сайта, составляет 10 ГБ, если это важно.

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