如何将图像从blobstore提供给Google App Engine中的python模板?

时间:2012-03-08 06:03:48

标签: google-app-engine

{%for result in results%}     

{{result.photo}}

{%endif%}

这显然不起作用,但我找不到有关如何上传照片的任何信息。在管理控制台上,我可以看到我已成功将图像上传到blobstore,现在我该如何将其发送到我的webapp模板?

我可以显示这样做的描述。

{%for result in results%}     

{{result.description}}

{%endif%}

但我不知道如何让GAE将图像文件作为图像读取。

非常感谢任何帮助。 谢谢大家!

2 个答案:

答案 0 :(得分:2)

我写了一篇关于这个主题的教程。阅读它,如果您在此处发布任何具体问题。 http://verysimplescripts.blogspot.com/

答案 1 :(得分:2)

模板中应该有<img>标记,其src属性包含应用程序提供的URL并提供图像数据。例如,假设您将图像存储在名为Image:

的模型中
class Image(db.Model):
    filename = db.StringProperty()  # The name of the uploaded image
    mime_type = db.StringProperty() # The mime type.
    content = db.BlobProperty()     # The bytes of the image

    def load(id):
        # Load an entity from the database using the id. Left as an
        # exercise...

    def link_id_for(self):
        "Returns an id that uniquely identifies the image"
        return self.key().id()

在呈现包含图像的页面的控制器/请求处理程序代码中,您将link_id_for返回的ID传递给模板,模板将包含您的图像标记,如下所示:

<img src="/images/show/{{image_id}}">

您将拥有一个处理/images/show/id请求的请求处理程序。您可以使用 id 将Image实体从数据存储区中取出并将其发送回响应中,如下所示:

found_image = Image.load(id)

response.headers['Content-Type'] = str(found_image.mime_type)
response.out.write(found_image.content)

显然,您必须根据当前的应用程序结构和惯例调整代码的细节,但这是它的核心:使用img标记,其中src指向您的应用;您的应用程序包括一个请求处理程序,它传递字节和Content-Type标题。