Я сохраняю изображение пользователя как 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")
Просто, чтобы уточнить, я пытался установить оба типа содержимого для JPEG и PNG. И все работает нормально на локальном сервере. Любая помощь будет оценена. Спасибо!