从GAE数据存储区提供HTML图像

时间:2015-03-15 20:14:21

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

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

1 个答案:

答案 0 :(得分:3)

如果您坚持要保留GAE数据存储区中的图像(通常不是最好的方法 - Google云端存储版),您可以使用<{1}的handlers:条目为其提供服务>

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

并在images.py中有类似

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

with,在早期的同一个文件中,s / thing如:

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!),但它通常不是最佳的。