2014-01-18 17 views
1

我只是按照GAE的文檔(https://developers.google.com/appengine/docs/python/blobstore/#Python_Uploading_a_blob)來編寫上傳處理程序來上傳blobstore,當我在計算機上選擇一個文件並點擊HTML頁面上的Submit按鈕時,它會顯示'The url'/upload「與任何處理程序不匹配。」 任何意見表示讚賞。爲什麼使用GAE blobstore時上傳處理程序不匹配

class MainPage(webapp2.RequestHandler): 
    def get(self): 

     self.response.headers['Content-Type'] = 'text/html; charset=utf-8' 

     upload_url = blobstore.create_upload_url('/upload') 
     logging.info(upload_url) 

     self.response.out.write('<html><body>') 
     self.response.out.write('<form action="%s" method="POST" enctype="multipart/form-data">' % upload_url) 
     self.response.out.write("""Upload File: <input type="file" name="file"><br> <input type="submit" 
      name="submit" value="Submit"> </form></body></html>""") 

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 

    def post(self): 
     logging.info('Upload handler') 
     upload_files = self.get_uploads('file') # 'file' is file upload field in the form 
     blob_info = upload_files[0] 
     logging.info(upload_files) 
     self.redirect('/serve/%s' % blob_info.key()) 


class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler): 

    def get(self, resource): 
     resource = str(urllib.unquote(resource)) 
     logging.info(resource) 
     blob_info = blobstore.BlobInfo.get(resource) 
     self.send_blob(blob_info) 


application = webapp2.WSGIApplication([ 
    ('/', MainPage), 
    ('/upload', UploadHandler), 
    ('/serve/([^/]+)?', ServeHandler), 
], debug=True) 

[UPDATE1] 我點擊提交按鈕後,我檢查DEV-服務器Blob存儲瀏覽器,我發現該文件已被上傳在那裏,但是,我的Chrome瀏覽器仍然顯示「的網址‘/上傳’不匹配任何處理程序。'。這就是爲什麼?

+0

是什麼在你的app.yaml的處理程序的一部分?是否有任何映射/上傳到這個Python模塊? – Greg

+0

@Greg app.yaml只有一個hanlder。 - 網址:/腳本:AppWS.application –

+0

一個更奇怪的事情,在開發服務器日誌,沒有任何logging.info(「上傳處理程序」)的信息,看來我UploadHandler沒有被調用,但是,文件被上傳到dev服務器blobstore和上傳URL總是(http:// localhost:8080/_ah/upload/ag5kZXZ-bXlnYWVweXN2Y3IiCxIVX19CbG9iVXBsb2FkU2Vzc2lvbl9fGICAgICA3LIJDA)**發生了什麼?** –

回答

0

我想問一下自我,我的問題,也許有人遇到類似的問題,因爲我。

後,我改變從

 
- url:/
    script: AppWS.application 

 
- url: (/.*)* 
    script: AppWS.application 

一切正常。

相關問題