Каков наилучший способ обработки потенциально больших загружаемых файлов в 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 ГБ, если это важно.