【问题标题】:image serving with google app engine使用谷歌应用引擎提供图像
【发布时间】:2013-06-01 10:23:43
【问题描述】:

我在数据存储中添加图像作为 blob 属性。我不想使用 BlobStore,因为我不知道我将来是否会继续使用 GAE。问题是我看不到图像。我看到的是“损坏的图标”。

这是我存储图像的方式

app = Applications()
image = str(self.request.get("image"))
app.img = db.Blob(image)
app.put()

img 是一个 db.BlobProperty()

这是我制作的图像服务类:

class ApplicationImageHandler(BaseHandler):
    def get(self):
        sURL = self.request.url.split("/")
        app = Applications.get_by_id(long(sURL[-1]))
        self.response.headers['Content-Type'] = 'image/jpeg'
        self.response.out.write(app.img)

这是我调用它时的页面:http://localhost:9082/applications/6310509548666880

我是这样称呼它的:<img src="/images/{{app.key().id()}}">

当我在 html 中呈现它时,“app”是数据库中的整个实体。

如果我复制链接并将其粘贴到浏览器中,那么我有相同的“损坏的图标”。

编辑:我只是在日志上看到我在图像上有一个代码 200。所以,我现在更困惑了:P

INFO     2013-06-01 15:18:27,650 server.py:585] default: "GET /images/4762397176758272 HTTP/1.1" 200 10

这是我用来获取图像的 html 表单的一部分:

<span>
  <input type="file" name="image">
</span>

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    首先,尝试直接从浏览器请求图片,看看它是否正确:

    http://localhost:9082/images/4762397176758272
    

    如果这不起作用,那么问题出在您的 ApplicationImageHandler 中,假设 server.py:585 在您的 get() 方法中,或者在图像上传过程中。你确定它是图像/jpeg 吗?您是否在表单中包含enctype="multipart/form-data"

    另外,您使用的是 Django 还是 Jinja 模板?如果你使用的是 Django,那么{{app.key().id()}} 是不正确的——你应该改用{{app.key.id}}

    【讨论】:

    • 谢谢。我正在使用 Jinja,并且我已经测试了直接指向我的浏览器的链接。相同的“破碎”图标。问题出在html表单上。我包括 enctype="multipart/form-data" 现在效果很好。谢谢
    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2012-03-09
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多