2017-01-17 4 views
3

Ich habe ein ImageField in einem meiner Modelle, damit Benutzer ein Bild hochladen können. Wenn ein Benutzer ein Upload-Formular einreicht, möchte ich sicherstellen, dass es sich bei der fraglichen Datei um ein vollständig gültiges und anzeigbares Bild handelt.So überprüfen Sie, ob eine hochgeladene Datei ein gültiges Bild in Django ist

Ich habe versucht, PIL, dass das Bild in der Tat authentisch war, um zu überprüfen verwenden, aber

from PIL import Image 
Image.open(model.file) 
Image.verify() 

Egal mit welcher Datei ich es geben, obwohl es immer eine Ausnahme auslöst.

Wer weiß von einer einfachen Möglichkeit, die Datei zu überprüfen?

Antwort

3

Gute Nachrichten, brauchen Sie nicht, dies zu tun:

Klasse Imagefield (upload_to = None, height_field = None, width_field = None, max_length = 100, ** Optionen)

Erbt Alle Attribute und Methoden von FileField validieren aber auch, dass das hochgeladene Objekt ein gültiges Bild ist.

https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ImageField

+0

Das ist richtig, aber es scheint nicht das allein alles tut. Sie müssen das Formular in forms.py einrichten, damit die Überprüfung durchgeführt werden kann. –

+0

Haben Sie den Upload bearbeitet, indem Sie die Rohpostdaten verarbeitet haben? – e4c5

+0

Ja. Ich habe versucht, alles in der Sichten-Methode, die ich eingerichtet hatte, zu behandeln. Ich habe es sowohl mit einem Formularsystem als auch mit der is_valid() -Methode eingerichtet und das hat wie ein Zauber funktioniert. –

1

Außerdem sollten Sie() verwenden, überprüfen Sie wie folgt vor:

from PIL import Image 
im = Image.open(model.file) 
im.verify() 
Verwandte Themen