2010-08-13 4 views
0

J'essaie de mettre en œuvre une solution de téléchargement de fichiers à l'aide du moteur d'applications et de python. La chose avec laquelle je suis en train de vérifier s'il y a effectivement un fichier joint au formulaire ou non. Je mets l'enctype = "multipart/form-data" et en principe cela fonctionne. Mon gestionnaire python ressemble à ceci:Gestion des téléchargements de fichiers dans App Engine (python)

fileupload = self.request.POST["content"] 

if not fileupload: 
    return self.error(400) 

Ceci fonctionne s'il n'y a aucun fichier attaché. Cependant, s'il y a un fichier joint, il donne l'erreur suivante:

File "D:\eclipse_dev\workspace\test\src\handlers.py", line 351, in post 
    if not fileupload: 
    File "C:\Python25\lib\cgi.py", line 633, in __len__ 
    return len(self.keys()) 
    File "C:\Python25\lib\cgi.py", line 609, in keys 
    raise TypeError, "not indexable" 
TypeError: not indexable 

Comment puis-je vérifier en toute sécurité qu'un téléchargement est présent avant de faire quoi que ce soit d'autre dans le gestionnaire?

Merci pour toute aide.

Cordialement, Robin

Répondre

0

Eh bien, j'ai ce travail à l'aide:

import cgi 
. 
. 
fileupload = self.request.POST["content"] 

if not isinstance(fileupload, cgi.FieldStorage): 
    return self.error(400) 

Je ne sais pas si c'est la meilleure solution, mais il semble travailler.

+0

Cela fonctionne pour moi, donc je vais accepter ma propre réponse. J'espère que c'est OK. – Phaedrus

1

Que diriez-vous:

fileupload = self.request.POST["content"] 

if fileupload is None: 
    return self.error(400) 
+0

J'ai essayé ceci, mais cela ne déclenche pas l'erreur. Je suis assez nouveau pour Python. Y a-t-il une autre façon de vérifier la valeur d'une variable. – Phaedrus