Django文件大小检查不起作用

时间:2012-08-24 22:19:45

标签: django django-forms

我写了一个小函数来检查文件是否大于设定值。但不知何故它不起作用。我已经将我的限制设置为50 MB,但即使尝试上传100 MB的数据,它仍然允许上传。 这是我的forms.py类和函数

from django.template.defaultfilters import filesizeformat

class ScribbleSaveForm(forms.Form):
    title=forms.CharField(
      label=u'Title',
      required=False,
      widget=forms.TextInput(attrs={'size':120})
    )
    media=forms.FileField(
      label=u'add file',
      required=False,
      widget=forms.FileInput()
    )
    body=forms.CharField(
      label=u'description',
      widget=forms.Textarea()
    )
    tags=forms.CharField(
      label=u'Tags',
      required=False,
      widget=forms.TextInput(attrs={'size':64})
    )
    def file_size(self):
            media=self.cleaned_data.get('media',False)
            if media:
                if media._size > 50*1024*1024 :
                    raise forms.ValidationError('Please keep filesize under 50MB.')
                return media
            else:
                raise forms.ValidationError('Could not read uploaded file.')

1 个答案:

答案 0 :(得分:2)

您走在正确的轨道上,您应该将file_size重命名为clean_media。见https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute

此外,请确保您始终返回正在清洁的内容,无论是否有效。