Разработвам приложение, което ще взема HTML и изображения от потребителя и ще ги записва в хранилище за данни. Засега тази част е готова. Как да обслужвам тези изображения като ресурси на HTML страницата, когато потребител поиска конкретна?
Сервиране на изображения за HTML от хранилище за данни на GAE
Отговори (1)
Ако сте категорични, че искате да запазите изображения в хранилището за данни на GAE (обикновено не е най-добрият подход – Google Cloud Storage е такъв), можете да ги сервирате например с handlers:
запис с
handlers:
- url: /img/*
- script: images.app
и в images.py
имате нещо подобно
app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)
с, по-рано в същия файл, s/нещо като:
class ImgHandler(webapp2.RequestHandler):
def get(self, img_key_urlsafe):
key = ndb.Key(urlsafe=img_key_urlsafe)
img = key.get()
self.response.headers['Content-Type'] = 'image/png'
self.response.write(img.data)
Разбира се, ще трябва да уредите URL адресите на изображенията от страна на клиента (напр. в HTML от шаблони jinja2) правилно подготвени като
/img/some_image_key_urlsafe
и предполагам, че изображенията са PNG и т.н. (разбира се, можете да имате типа съдържание като един от атрибутите на обекта на изображението).
Освен ако изображенията не са наистина малки, това ще добави значително натоварване към вашето GAE приложение, което може да бъде сведено до минимум чрез скриване на изображенията в Google Storage и обслужването им директно от там... обслужването им директно от хранилището за данни Е възможно (стига да са са доста малки, тъй като GAE обектът е ограничен до максимум 1MB!), но обикновено не е оптимален.