2013-06-01 47 views
2

我在數據存儲中添加一個圖像作爲blobproperty。我不想使用BlobStore,因爲我不知道我將來是否會繼續使用GAE。問題是我看不到圖像。我看到的是「破碎的圖標」。圖片與谷歌應用程序引擎服務

這是我如何保存圖像

app = Applications() 
image = str(self.request.get("image")) 
app.img = db.Blob(image) 
app.put() 

的IMG是db.BlobProperty()

這裏是圖像服務類我做:

class ApplicationImageHandler(BaseHandler): 
    def get(self): 
     sURL = self.request.url.split("/") 
     app = Applications.get_by_id(long(sURL[-1])) 
     self.response.headers['Content-Type'] = 'image/jpeg' 
     self.response.out.write(app.img) 

這裏是當我叫它:http://localhost:9082/applications/6310509548666880

而這裏是我怎麼稱呼它:<img src="/images/{{app.key().id()}}">

「app」是數據庫中的整個實體,當我在html中呈現它時。

如果我複製鏈接並將其粘貼到瀏覽器中,那麼我具有相同的「破碎圖標」。

編輯:我只是在日誌上看到我在圖像上有一個代碼200。所以,我現在更迷惑:P

INFO  2013-06-01 15:18:27,650 server.py:585] default: "GET /images/4762397176758272 HTTP/1.1" 200 10 

這裏是HTML表單的一部分,我用它來獲取圖像:

<span> 
    <input type="file" name="image"> 
</span> 

回答

1

首先,嘗試直接從瀏覽器請求圖像和看看它的外觀看起來不錯:

http://localhost:9082/images/4762397176758272 

如果不工作,那麼問題是無論是在你的ApplicationImageHandler,假設server.py:585是在你的get()方法,或者它在圖像上載處理。你確定它是一個圖像/ JPEG?你在表格中是否包含enctype="multipart/form-data"

另外,你使用Django或Jinja模板?如果您使用的是Django,則{{app.key().id()}}不正確 - 您應該使用{{app.key.id}}

+1

謝謝。我正在使用Jinja,並且我已經直接測試了鏈接到我的瀏覽器。相同的「破碎」圖標。問題出在html表單上。我包含enctype =「multipart/form-data」,現在效果很好。謝謝 – Tasos