Django上传文件大小的限制和限制



我的应用程序中有一个表单,用户可以在其中上传文件,那么我如何设置上传文件大小和类型的限制?

**models.py**
class Document(models.Model):
emp = models.ForeignKey(Emp, null=True, on_delete=models.SET_NULL)
Description = models.CharField(max_length=100, null=True)
Fichier = models.FileField(upload_to='file/')
data_created = models.DateTimeField(auto_now_add=True, null=True)

**forms.py**
class documentForm(ModelForm):
class Meta:
model = Document
fields = '__all__'
exclude = []

**view.py**
def createDocument(request):
forms = documentForm()
if request.method == 'POST':
forms = documentForm(request.POST, request.FILES)
if forms.is_valid():
forms.save()
return redirect('/')
context = {'forms':forms}
return render(request, 'accounts/document_form.html', context)
from django import forms
from django.template.defaultfilters import filesizeformat
from django.utils.translation import ugettext_lazy as _
# 2.5MB = 2.5 * 1024 * 1024 = 2621440
# 5MB = 5 * 1024 * 1024 = 5242880
# 10MB = 10 * 1024 * 1024 = 10485760
# n MB = n * 1024 * 1024 = ...
# I write this example for 5 MB size limit for you
MAX_UPLOAD_SIZE = "5242880"
class documentForm(forms.ModelForm):
def clean(self):
self.check_file()
return self.cleaned_data
def check_file(self):
content = self.cleaned_data["Fichier"]
content_type = content.content_type.split('/')[0]
if content._size > int(MAX_UPLOAD_SIZE):
raise forms.ValidationError(_(f"Please keep file size under {(filesizeformat(MAX_UPLOAD_SIZE)}. Current file size {filesizeformat(content._size)}"))
return content

class Meta:
model = Document
fields = '__all__'

此外,您还有更多的方法可以在不同级别的代码中执行此限制,有关更多信息,请参阅参考。

参考文献:

按文件内容类型和大小验证[djangosnippet]

Django文件上传大小限制[stackoverflow]

文件上传[django docs]

上传的文件和上传处理程序[django docs]

最新更新