我这样做节省了用户的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。并且本地服务器上的工作正常。任何帮助,将不胜感激。谢谢!
user.image的属性类型是什么? – mjibson 2012-02-11 22:42:07
更好的方法是将urlfetch的数据存储在blobstore中,并使用'images.get_serving_url()'。 – mjibson 2012-02-11 22:43:00
感谢您的提示。它是db.BlobProperty。 Blobstore将增加另一个级别的复杂性 - 这些是Twitter用户的小型化身图像。 – 2012-02-11 23:35:55