Проверка загрузки файла в Django - PullRequest
0 голосов
/ 12 декабря 2018

Здесь я использую Django-REST framework для загрузки файлов, я не использую слой модели в Django.Поэтому я использую default_storage для загруженного файла для сохранения.Мой вопрос здесь заключается в том, как мне проверить файлы.Загруженный файл не должен содержать 10 МБ. Заранее.

class imageapi(APIView):
    def post(self, request):

        if request.method == 'POST' and request.FILES['file']:
            try:

                form = UploadFileForm(request.POST, request.FILES)
                #save_path = os.path.join(settings.MEDIA_ROOT, 'uploads', request.FILES['file'])

                save_path = str(settings.MEDIA_ROOT)+ '/uploads/'+str(request.FILES['file'])
                path = default_storage.save(str(save_path), request.FILES['file'])
                return Response({default_storage.path(path)})
            except Exception as ex:
                return Response({"DATA": str(ex)})

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Несколько ответов здесь stackoverflow и официальные документы предлагают обработать это на вашем веб-сервере.

Если вы используете nginx, вы можете ограничить размер файла с помощью client_max_body_size в блоке http:

http {
    ...
    client_max_body_size 10M;
}    
0 голосов
/ 12 декабря 2018

1.Путь django:

Вы можете проверить размер файла в вашей форме следующим образом: field_name.size.Это вернет размер в байтах.

2.Способ сервера:

Вы можете настроить свой интерфейсный сервер (Nginx или Apacher, или что вы используете), чтобы не принимать файлы более 10 МБ.Этот подход лучше и безопаснее.

...