2011-01-27 73 views
1

我用下面的代碼垃圾字符:file.read()AppEngine上返回

class Image(webapp.RequestHandler): 
    def get(self, id): 
     path = os.path.join(os.path.dirname(__file__), 'fcimages/%s.png' % id) 
     self.response.headers['Content-Type'] = 'image/png' 
     print file(path,'rb').read() 

和正常工作本地(即返回圖像),但是當我使用它在實時服務器I得到垃圾。你可以在這裏看到輸出:http://1.ge0.co/fc/1.png

我在做什麼錯?

謝謝!

PS - 我知道這不是最健壯的代碼,但它只用於我的內部項目,它不是按比例構建的。

回答

5

我設法最終解決它,我認爲問題是self.response和print的組合。這是代碼的作品:

+3

是的。切勿在web應用程序RequestHandler中使用`print`。您將打印到標準輸出而不是響應對象,並且您打印的內容將在原始CGI響應中結束,通常隱藏在標題中。 – geoffspear 2011-01-27 17:11:22

0

貌似沒有設置Content-Type的正確

Content-Length:72643 
Content-Type:text/html 
Date:Thu, 27 Jan 2011 13:01:57 GMT 
Server:Google Frontend 

這可以解釋爲什麼你看到的文件,而不是渲染圖像的內容。

+0

我改變了我的原代碼第4行到:打印「內容類型:圖像/ PNG」,現在我得到一個空白頁,而不是垃圾代碼...任何進一步的提示? – tomcritchlow 2011-01-27 13:09:12