【问题标题】:Serving images for HTML from GAE datastore从 GAE 数据存储中为 HTML 提供图像
【发布时间】:2016-10-01 11:09:25
【问题描述】:

我正在开发一个应用程序,它将从用户那里获取 HTML 和图像并将其保存在数据存储中。至此,这部分就完成了。当用户请求特定图像时,如何将这些图像作为 HTML 页面的资源提供?

【问题讨论】:

  • 我重写了标题以解释问题的症结(without tags)并修复了最后几句话以更清楚地将问题表达为问题。但是,您可能仍然应该 edit 包含当前保存到数据存储区的代码的最小化版本。
  • 是的,我们需要有关您的特定实施的更多信息,我什至不明白您要做什么。

标签: python html google-app-engine google-cloud-datastore app-engine-ndb


【解决方案1】:

如果您坚持要将图像保存在 GAE 数据存储中(通常不是最好的方法 -- 谷歌云存储是),您可以为它们提供服务,例如使用 handlers: 条目与

handlers:
- url: /img/*
- script: images.app

images.py 你有类似的东西

app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)

在同一个文件的前面,s/类似的东西:

class ImgHandler(webapp2.RequestHandler):
    def get(self, img_key_urlsafe):
        key = ndb.Key(urlsafe=img_key_urlsafe)
        img = key.get()
        self.response.headers['Content-Type'] = 'image/png'
        self.response.write(img.data)

当然,您必须安排在客户端正确准备图片的 URL(例如来自 jinja2 模板的 HTML)

/img/some_image_key_urlsafe

我假设图像是 PNG 等(当然,您可以将内容类型作为图像实体的属性之一)。

除非图像非常小,否则这会给您的 GAE 应用程序增加大量负载,可以通过将图像存储在 Google 存储中并直接从那里提供它们来最小化这种情况......直接从数据存储中提供它们是可行的(如只要它们非常小,因为 GAE 实体的最大限制为 1MB!),但通常不是最佳的。

【讨论】:

    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 2017-05-01
    • 2014-06-20
    • 2014-03-28
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多