2008-11-06 3 views
3

Compte tenu de la forme html ...Nom d'un fichier dans une requête POST dans Google AppEngine

<form id="mainform" action="/upload" enctype="multipart/form-data" method="post"> 
     <div> 
      <input type="file" name="img"/> 
     </div> 
     <div> 
      <input type="submit" value="Send"> 
     </div> 
    </form> 

... et le gestionnaire ...

class Picture(db.Model): 
    image = db.BlobProperty() 

class Submission(webapp.RequestHandler): 
    def post(self): 
     picture = Picture() 
     image = self.request.get("img") 
     picture.image = db.Blob(image) 
     picture.put() 
     self.redirect('/') 

... est-il manière dans le gestionnaire pour obtenir le nom de fichier que l'utilisateur a entré pour le téléchargement? En PHP, je peux me référer à $ _FILES ['img'] ['nom'], mais je ne vois pas quelle syntaxe, le cas échéant, fonctionnerait avec request.get. Dans une autre question, un autre auteur utilise une routine javascript dans sa page html pour extraire le nom de fichier que l'utilisateur choisit chaque fois qu'un événement OnChange se produit, puis le transmettre séparément dans un champ masqué. Est-ce nécessaire? PHP semble obtenir le nom de fichier gratuitement.

Répondre

6

Je découvert une solution dans the documentation for the cgi module:

picture.local_filename = self.request.POST[u'img'].filename 

objet POST de la demande est une collection de FieldStorage, et les objets FieldStorage ont un attribut de nom de fichier.

Questions connexes