2016-04-16 12 views
1

Ich bin an einem Punkt fest, um die Upload-Funktion in meiner Webanwendung mit GAE zu implementieren. Nach dem Senden auf der/signup-Seite wird auf die Seite/upload_file umgeleitet, während der Fehler 405 Methode Get nicht erlaubt angezeigt wird und ich erwartet habe, dass das Upload-Formular angezeigt wird.Google App Engine: 405 Methode GET ist für diese Ressource nicht zulässig

(Haben Sie etwas Referenz von: https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/appengine/blobstore/main.py)

jede Hilfe dankbar!

Teil des Codes in einem Haupt Python-Skript:

class FileUploadFormHandler(BaseHandler): 
# BaseHandler is a subclass of webapp2.RequestHandler. 
    def get(self): 
     # create an upload URL for the form that the user will fill out 
     upload_url = blobstore.create_upload_url('/upload_file') 

     self.render('upload-file.html', upload_url = upload_url) 

class FileUploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 

     upload = self.get_uploads('file')[0] ## 'file' is a var in the upload-file.html 
     blob_key = upload.key() 
     blob_reader = blobstore.BlobReader(blob_key) # instantiate a BlobReader for a given BlobStore value. 
     locations = parsefile(blob_reader) 
     img_url = generate_url(locations=locations) 
     self.redirect('/view_map/%s' % img_url) 

app = webapp2.WSGIApplication([('/', Home), 
          ('/signup', Register), 
          ('/login', Login), 
          ('/logout', Logout), 
          ('/upload_file', FileUploadHandler), 
          ('/view_map/([^/]+)?', ViewMap) 
          ], 
          debug=True) 

Antwort

-1

Nach at/Anmeldeseite einreichen, um es zu/UPLOAD_FILE Seite umleitet, während es die Fehler 405 Methode Lassen Sie sich nicht erlaubt, und ich aufgefordert, hatte erwartet, das Upload-Formular zu sehen.

Ich denke hierin liegt das Problem. Nach der Anmeldung werden Sie auf die Seite /upload_file umgeleitet, die wie folgt FileUploadHandler zugeordnet ist: . Beachten Sie, dass FileUploadHandler keine Methode hat, um Ihre Weiterleitung zu behandeln.

Was ich glaube, dass Sie erreichen wollten, ist Ihre Vorlage upload_file (die Ihr Upload-Formular enthält) nach der Anmeldung zu rendern und Sie haben bereits die Logik-Setup in class FileUploadFormHandler. So Sie stattdessen die /upload_file Route zu FileUploadFormHandler

Auch benötigen Sie einen Weg der Benutzer den Anruf zu Ihrem FileUploadHandler zu behandeln, wenn die Erstellung der Upload-URL füllt die Form abbilden sollte.

wie:

class FileUploadFormHandler(BaseHandler): 

    def get(self): 
     # upload_url handles the POST call to FileUploadHandler 
     upload_url = blobstore.create_upload_url('/upload') 
     self.render('upload-file.html', upload_url = upload_url) 

...

app = webapp2.WSGIApplication(
    [('/upload', FileUploadHandler), 
    ('/upload_file', FileUploadFormHandler), 
    ], debug=True) 

Hinweis: Sie sollten wahrscheinlich mit weniger verwirrend URL-Pfaden kommen;)

+0

Dank für Sie schnell und hilfreicher Vorschlag! Funktioniert der Bolbstore-Beispielcode? Ansonsten sollte es aktualisiert werden. :) –

+0

In welchem ​​Beispiel könnten Sie sich darauf beziehen? –

+0

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/appengine/blobstore/main.py –