2010-02-01 6 views
1

En utilisant WSGI, webob et PIL, j'essaie d'utiliser Image.open() sur un fichier directement à partir de la requête. Cependant, Image.open() lève toujours l'exception "Impossible d'identifier le fichier image". L'image est le seul champ, aucune autre variable POST ou GET n'est utilisée. Le fichier provient d'un formulaire de téléchargement HTML standard avec enctype = "multipart/form-data".Ouverture du fichier POSTed avec PIL Image

import Image, ImageFile 
from webob import Request 

def application(environ, start_response): 
    req = Request(environ) 
    req.make_body_seekable() 
    im = Image.open(req.body_file) # "Cannot identify image file" 
    im.save('testfileio.png','PNG') 

Je pense que je ne suis pas charger dans les données d'image téléchargées correctement, mais ne suis pas sûr de ce que la bonne façon de le faire serait.

+0

Quand vous dites "POSTed", voulez-vous dire que vous utilisez un outil spécial pour POSTER une requête avec le corps 'Content-Type: image/png'? Ou voulez-vous simplement dire que vous avez un navigateur et un formulaire 'multipart/form-data' avec un seul champ, un fichier' '? Si ce dernier, vous devez toujours analyser le formulaire de la manière habituelle pour obtenir le champ de téléchargement de fichier à partir de celui-ci. – bobince

+0

C'est le dernier, il s'agit d'un formulaire de téléchargement de fichier standard en HTML. –

Répondre

3

Je ne suis pas famaliar avec webob, mais je suppose que body_file contient le contenu de la publication entière et pas seulement votre image. Les docs semblent confirmer cela.

Que renferme req.POST ['nameOfFileControl']? Est-ce que cela a un handle de fichier? Cela va être le handle de fichier dont Image.open a besoin.