3

我這樣做節省了用戶的BlobProperty圖像:圖像響應

user.image = urlfetch.fetch(image_url).content 

然後我使用的是URL,例如渲染圖像:

/image/user_id 

圖像必須保存,因爲當我做len(user.image)時,我得到了數千個數字。在本地實例上,圖像呈現正常。在部署應用程序,我得到以下錯誤,當我去到圖像的URL沒有顯示在瀏覽器中:

Traceback (most recent call last): File "/base/python27_runtime/python27_dist/lib/python2.7/wsgiref/handlers.py", line 86, in run self.finish_response() File "/base/python27_runtime/python27_dist/lib/python2.7/wsgiref/handlers.py", line 127, in finish_response self.write(data) File "/base/python27_runtime/python27_dist/lib/python2.7/wsgiref/handlers.py", line 202, in write assert type(data) is StringType,"write() argument must be string" AssertionError: write() argument must be string

而且,這裏的服務於圖像處理程序:

class ImageHandler(webapp2.RequestHandler): 
""" Returns image based on id. """ 
def get(self, *args, **kwargs): 
    user = db.get(
     db.Key.from_path('User', models.User.get_key_name(kwargs.get('id')))) 
    if user.image: 
     self.response.headers['Content-Type'] = "image/jpeg" 
     self.response.out.write(user.image) 
    else: 
     self.response.out.write("No image") 

只是爲了澄清我試圖將content-type設置爲jpeg和png。並且本地服務器上的工作正常。任何幫助,將不勝感激。謝謝!

+1

user.image的屬性類型是什麼? – mjibson 2012-02-11 22:42:07

+1

更好的方法是將urlfetch的數據存儲在blobstore中,並使用'images.get_serving_url()'。 – mjibson 2012-02-11 22:43:00

+0

感謝您的提示。它是db.BlobProperty。 Blobstore將增加另一個級別的複雜性 - 這些是Twitter用戶的小型化身圖像。 – 2012-02-11 23:35:55

回答

0

回答我的問題,能解決一切:

self.response.out.write(str(user.image)) 

因爲文檔的例子不投的BlobProperty作爲字符串這是令人困惑的。