【问题标题】:Google App Engine upload image BlobstoreGoogle App Engine 上传图片 Blobstore
【发布时间】:2015-02-07 11:52:56
【问题描述】:

我想让用户上传图片并为此上传制作演示,并阅读 GAE Blobstore API。

我的问题是提交图像文件时出现错误 AttributeError: 'UploadHandlerDemo' object has no attribute 'get' 但 Blob 类已在数据存储区中创建。我该如何处理这个问题?

这是我的代码 sn-p:

class FileUploadDemo(webapp2.RequestHandler):
    def get(self):
        from google.appengine.ext import blobstore
        upload_url = blobstore.create_upload_url('/admin/upload')
        logging.info(upload_url)
        blob = blobstore.BlobInfo.all().get()
        logging.info(blob.filename)
        content = {"upload_url":upload_url}
        HelperGlobal.render_template(self, 'blobstoreDemo.html', content)

这里是我的 UploadHandler:

from google.appengine.ext.webapp import blobstore_handlers
class UploadHandlerDemo(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get.uploads('file')
        blob_info = upload_files[0]   
        logging.info(blob_info) 
        self.redirect('/admin/serve/%s' % blob_info.key())

在数据存储路径中,我有 BlobInfoBlobUplaodSessions,它们看起来还不错。

在 html 部分,我在 JINJA 的帮助下将 GAE Blobstore 示例转换为使用 upload_url 数据呈现的单个 HTML。

这里是我的简单演示的 HTML 代码:

<html>
<body>
<form action="{{upload_url}}" method="POST" enctype="multipart/form-data">
Upload File: <input type="file" name="file" id="UniqueFile">
             <br> 
             <input type="submit" name="submit" value="Submit">
</form>
</body>
</html>

当我按下提交按钮时,它会创建具有相应图像的 BlobInfo 实体,但服务器收到错误代码 500,并说:

AttributeError: 'UploadHandlerDemo' 对象没有属性 'get'

我尝试了很多次并查看了 stackoverflow,但找不到解决方案。

【问题讨论】:

  • 很遗憾self.get.uploads 中的UploadDemoHandler 类有语法错误,它必须是self.get_uploads 并且这个demo 代码有效。不需要进一步的答案,但它可能对像我这样的初学者有用。

标签: python google-app-engine upload blobstore


【解决方案1】:

你必须替换这个

upload_files = self.get.uploads('file')

upload_files = get_uploads('file')

【讨论】:

    【解决方案2】:

    我认为:upload_files = self.get.uploads('file')

    应该是: upload_files = self.get_uploads('file')

    【讨论】:

      【解决方案3】:

      AttributeError: 'UploadHandlerDemo' 对象没有属性 'get'

      大概是指这一行:

      upload_files = self.get.uploads('file')

      请向我们展示 UploadHandlerDemo 中的其余代码。

      你有“get”属性设置吗?我不太确定你想用 self.get.uploads('file') 做什么。您是否在 self (UploadHandlerDemo) 中调用 get 对象? get 对象需要拥有 uploads(file) 方法。

      【讨论】:

        猜你喜欢
        • 2013-12-25
        • 2019-04-02
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 2011-03-25
        • 2012-09-05
        • 2013-07-13
        • 1970-01-01
        相关资源
        最近更新 更多