我正在开发一个应用程序,它将从用户那里获取HTML和图像并将其保存在数据存储区中。到目前为止,这部分已经完成。当用户请求特定图像时,如何将这些图像作为HTML页面的资源提供?
答案 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!),但它通常不是最佳的。