Моя цель - загрузить файл размером более 2,5 МБ на сервер django.Я могу загрузить файл, если он меньше 2,5 МБ, если файл больше 2,5 МБ, я получаю 413 Payload too large
в браузере.И я не понимаю почему.
Я установил MAX_UPLOAD_SIZE = 429916160
MEDIA_ROOT = os.path.join(BASE_DIR, 'files')
MEDIA_URL = '/files/'
и FILE_UPLOAD_MAX_MEMORY_SIZE = MAX_UPLOAD_SIZE
в файле settings.py.В настоящее время я использую сервер разработки django без apache или nginx.
Мои модели.py:
def validate_file_extension(value):
ext = os.path.splitext(value.name)[1] # [0] returns path+filename
valid_extensions = ['.vsdx']
if not ext.lower() in valid_extensions:
raise ValidationError(u'Unsupported file extension.')
class UpLoadFile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
file = models.FileField(upload_to=path, validators=[validate_file_extension])
uploaded_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.user.username + '/' + self.file.name
class UploadFileForm(forms.ModelForm):
file = forms.FileField(required=True, label="")
class Meta:
model = UpLoadFile
fields = ('file',)
views.py:
if request.method == 'GET':
upload_file_form = UploadFileForm()
all_files = UpLoadFile.objects.select_related("user").filter(user__username=request.user).all().order_by("-uploaded_at")
return render(request, 'interface/files.html', {'page_title': 'Datoteke',
'files': all_files,
'upload_file_form': upload_file_form})
elif request.method == 'POST':
if "upload-file" in request.POST:
file_name = request.FILES.get("file")
username = request.user
if bool(os.path.exists(f'files/{username}/{file_name}')):
messages.error(request, "Datoteka s tem imenom že obstaja!")
return redirect('files')
else:
upload_file_form = UploadFileForm(request.POST, request.FILES)
upload_file_form.instance.user = username
if upload_file_form.is_valid():
upload_file_form.save()
messages.success(request, "Datoteka je uspešno dodana!")
return redirect('files')
messages.error(request, "Te vrste datoteke ni mogoče naložiti na server. Preverite če ima datoteka .vsdx končnico.")
return redirect('files')
Были и какие настройки я должен установить для загрузки файла размером более2.5MB?Буду признателен за советы по работе с файлами такого типа.