Загрузка файла Django с проверкой не работает - PullRequest
0 голосов
/ 10 марта 2019

Я создаю веб-сайт, где пользователь может загружать музыкальные файлы, и он будет сохранен в каталоге. Поэтому я добавил следующую HTML-форму:

<form action='upload/' method='POST' enctype="multipart/form-data">{% csrf_token %}
        <input type="file" name="file">
        <input type="submit" name="">
</form>

Я успешно настроил URL для обработки этого запроса. Вот мнение, на которое указывает этот URL:

def uploadMusic(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
            return HttpResponse('Success')
        else:
            return HttpResponse('Could not verify')
    else:
        form = UploadFileForm()
        return HttpResponse('Failed')

Кроме того, я хочу, чтобы этот музыкальный файл был проверен перед сохранением в каталоге. Я хочу, чтобы размер файла был меньше, чем 4 МБ. В мой файл forms.py я добавил следующие коды:

from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file = forms.FileField()

    def clean(self):
        file = self.cleaned_data.get('file', False)
        if file:
            if file._size > 4*1024*1024:
                return 'Error'
            else:
                return file
        else:
            raise forms.ValidationError('Wrong')

Хорошо, проблема в том, что я не могу заставить это работать. Я не получаю ошибок, но файл успешно загружен, несмотря на размер файла. PS: я новичок

1 Ответ

0 голосов
/ 10 марта 2019

проверяет, если еще логика

 if file:

всегда будет истинной, если какой-либо файл появится.

if file._size > 4*1024*1024:
   return 'Error'

вернет строку ошибки, но не вызовет никакой фактической ошибки вкратце

else:
    raise forms.ValidationError('Wrong')

никогда не будет исполнено

...