Как загрузить файл размером более 2,5 МБ в Django? - PullRequest
0 голосов
/ 11 июля 2019

Моя цель - загрузить файл размером более 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?Буду признателен за советы по работе с файлами такого типа.

1 Ответ

1 голос
/ 11 июля 2019

Включите это в ваш файл settings.py

DATA_UPLOAD_MAX_MEMORY_SIZE = 50242880
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...