2012-03-08 66 views
0

{%的結果結果%} 如何將圖像從blobstore提供給Google App Engine中的python模板?

{{result.photo}}

{%ENDIF%}

這顯然是行不通的,但我不能找到如何上傳任何信息照片。在管理控制檯上,我可以看到我已經成功將圖像上傳到Blobstore,現在我怎樣才能將它發送到我的webapp模板?

我可以顯示這樣做的描述。

{%的結果結果%}

{{result.description}}

{%ENDIF%}

但我不知道怎麼去GAE讀取圖像文件作爲圖像。

任何幫助將不勝感激。 謝謝大家!

回答

2

你應該在你的模板中的<img>標籤具有src屬性包含由應用程序提供服務,並提供該數據的圖像的URL。例如,假設您存儲圖像的模型稱爲圖像:

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以獲取圖像實體進行數據存儲,在響應發送回來,像這樣的:

found_image = Image.load(id) 

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

很明顯,你必須代碼的細節適應你目前的應用程序結構和約定,但這是它的核心:使用img標記和src指向您的應用程序;您的應用程序包含一個請求處理程序,它提供字節和一個Content-Type標題。

相關問題