我正在使用 python 魔法在上传之前验证文件,因此我遵循以下链接:
https://djangosnippets.org/snippets/3039/
验证器.py 文件:
from django.core.exceptions import ValidationError
import magic
class MimetypeValidator(object):
def __init__(self, mimetypes):
self.mimetypes = mimetypes
def __call__(self, value):
try:
mime_byt = magic.from_buffer(value.read(1024), mime=True)
mime = mime_byt.decode(encoding='UTF-8')
if mime not in self.mimetypes:
raise ValidationError('%s is not an acceptable file type' % value)
except AttributeError as e:
raise ValidationError('This value could not be validated for file type' % value)
这是我的 form.py 文件:
class FileForm(forms.ModelForm):
file = forms.FileField(
label='Select a File *',
allow_empty_file=False,
validators=[MimetypeValidator('application/pdf')],
help_text='Max. Size - 25 MB')
class Meta:
model = File
fields = ('file')
所以我可以用这个 python 魔术逻辑上传一个 pdf 文件,但我也想允许上传一个图像 tiff 文件并将文件大小限制为 25 MB。
如何通过使用 python 魔术来实现这一点?