Python 从GAE数据存储为HTML提供图像服务

Python 从GAE数据存储为HTML提供图像服务,python,html,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Html,Google App Engine,Google Cloud Datastore,App Engine Ndb,我正在开发一个应用程序,它将从用户那里获取HTML和图像,并将其保存在数据存储中。到目前为止,这一部分已经完成。当用户请求某个特定的图像时,我如何将这些图像作为HTML页面的资源提供?如果您坚持要将图像保存在GAE数据存储中(通常不是最好的方法——谷歌云存储是),您可以使用处理程序:条目提供这些图像 handlers: - url: /img/* - script: images.app 在images.py中 app = webapp2.WSGIapplication('/img/(.*)'

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

如果您坚持要将图像保存在GAE数据存储中(通常不是最好的方法——谷歌云存储是),您可以使用
处理程序:
条目提供这些图像

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

app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)
在同一文件的前面,使用类似于:

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应用程序增加大量的负载,通过将图像存储在谷歌存储中并直接从那里提供服务,可以将负载降至最低。。。直接从数据存储中为它们提供服务是可行的(只要它们非常小,因为GAE实体的最大容量为1MB!),但这通常不是最优的。

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

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

app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)
在同一文件的前面,使用类似于:

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应用程序增加大量的负载,通过将图像存储在谷歌存储中并直接从那里提供服务,可以将负载降至最低。。。直接从数据存储中为它们提供服务是可行的(只要它们非常小,因为GAE实体的最大容量为1MB!),但这通常不是最优的。

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

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

app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)
在同一文件的前面,使用类似于:

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应用程序增加大量的负载,通过将图像存储在谷歌存储中并直接从那里提供服务,可以将负载降至最低。。。直接从数据存储中为它们提供服务是可行的(只要它们非常小,因为GAE实体的最大容量为1MB!),但这通常不是最优的。

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

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

app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)
在同一文件的前面,使用类似于:

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应用程序增加大量的负载,通过将图像存储在谷歌存储中并直接从那里提供服务,可以将负载降至最低。。。直接从数据存储中为它们提供服务是可行的(只要它们非常小,因为GAE实体的最大容量为1MB!),但这通常不是最优的。

我重写了标题以解释问题的症结()并修复了最后几句话,以更清楚地将问题表述为问题。但是,您可能仍然需要包含当前保存到数据存储的代码的最小化版本。是的,我们需要有关您的特定实现的更多信息,我甚至不知道您要做什么。我重写了标题以解释问题的症结()并修正了最后几句,将问题更清晰地表达为一个问题。但是,您可能仍然需要包含当前保存到数据存储的代码的最小化版本。是的,我们需要有关您的特定实现的更多信息,我甚至不知道您要做什么。我重写了标题以解释问题的症结()并修正了最后几句,将问题更清晰地表达为一个问题。但是,您可能仍然需要包含当前保存到数据存储的代码的最小化版本。是的,我们需要有关您的特定实现的更多信息,我甚至不知道您要做什么。我重写了标题以解释问题的症结()并修正了最后几句,将问题更清晰地表达为一个问题。但是,您可能仍然需要包含目前保存到数据存储中的代码的最小化版本。是的,我们需要有关您的特定实现的更多信息,我甚至不知道您想做什么。