【问题标题】:Image upload not working with App Engine NDB: 405 Method Not Allowed图片上传不适用于 App Engine NDB:405 Method Not Allowed
【发布时间】:2013-03-21 11:16:00
【问题描述】:

我按照本教程https://developers.google.com/appengine/docs/python/tools/webapp/blobstorehandlers 允许用户在我的应用中上传图片。它适用于我使用 Python 2.5 环境的应用程序,但不适用于我的 Python 2.7 应用程序。根据文档,blobstore 在 webapp2 中不可用,因此我们必须使用 webapp blobstore。

加载表单时,我没有错误。提交表单时出现错误。

当我将upload_url放入表单动作属性并提交时,我得到这个错误:405 Method Not Allowed The method POST is not allowed for this resource

当我不放upload_url并提交时,我没有错误但表单数据没有保存在数据库中。

【问题讨论】:

  • 和我说的基本一样
  • 405:你有 webapp2 后处理程序吗?显示您的代码?
  • 抱歉我暂时把关于上传的所有代码都删掉了。我的代码与教程完全一样,只是继承自 2 个处理程序:类 AddProductHandler(BaseHandler, blobstore_handlers.BlobstoreUploadHandler)。如果它可以帮助您解决问题,我使用 GAE Boilerplate github.com/coto/gae-boilerplate

标签: google-app-engine webapp2 app-engine-ndb


【解决方案1】:

会不会是你犯了类似的错误

AddProductHandler(BaseHandler, blobstore_handlers.BlobstoreUploadHandler):
    def get(self):
        #Code

而不是

AddProductHandler(BaseHandler, blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        #Code

?

如果没有,你可以尝试向处理程序添加一个 def get(self) 并查看它是否命中那个。

另一种可能性是您给 blobstore.create_upload_url 提供了错误的 uri,因此您实际上点击了错误的处理程序?

blobstore.create_upload_url(uri)

uri 应该指向 AddProductHandler

【讨论】:

  • 谢谢我终于解决了我的问题。这是由于 create_upload_url 中的错误 uri。我不得不使用“/add-product/”而不是“/add-product”。
猜你喜欢
  • 2016-05-12
  • 2016-08-08
  • 2019-10-05
  • 2019-06-17
  • 2016-04-12
  • 1970-01-01
  • 2018-07-15
  • 2018-06-29
  • 1970-01-01
相关资源
最近更新 更多