我的一个模型中有一个ImageField,以便用户可以上传图像。当用户提交上传表单时,我想验证相关文件是否是完全有效且可显示的图像。
我尝试使用PIL验证图像实际上是真实的,但使用
from PIL import Image
Image.open(model.file)
Image.verify()
不管我给它的文件是什么,它总是抛出异常。
任何人都知道验证文件的简单方法吗?
答案 0 :(得分:4)
好消息,你不需要这样做:
类ImageField(upload_to =无,height_field =无,width_field =无,max_length = 100,**选项)
继承FileField中的所有属性和方法,但也验证上传的对象是有效图像。
https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ImageField
答案 1 :(得分:1)
此外,您应该使用verify(),如下所示:
{{1}}
答案 2 :(得分:0)
if 'image' in request.FILES['image'].content_type:
# Some code
else:
# the file is not image
ImageField
未创建表单时,form.py
不起作用
实际上,如果我们上传的不是图像文件,然后将其保存在图像字段中,则不会出现任何错误,因此,在保存之前必须检查文件的content_type
。
答案 3 :(得分:0)
在将图像/数据插入数据库或在需要的位置使用它之前,您可以将“枕头”与“尝试,除了”块一起使用”
就像我下面的示例一样,提交票证支持表单“ view.py”文件:
from PIL import Image
if request.method=='POST':
# check if attachment file is not empty inside try/except to pass django error.
try:
ticket_attachmet_image = request.FILES["q_attachment_image"]
except:
ticket_attachmet_image = None
# check if uploaded image is valid (for example not video file ) .
if not ticket_attachmet_image == None:
try:
Image.open(ticket_attachmet_image)
except:
messages.warning(request, 'sorry, your image is invalid')
return redirect('your_url_name')
#done。