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

Программы на Python
Anonymous
Как лучше всего обрабатывать потенциально большие загрузки файлов в Django?

Сообщение Anonymous »

Я читал документацию по 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 ГБ, если это важно.

Подробнее здесь: https://stackoverflow.com/questions/789 ... -in-django

Вернуться в «Python»