Я разрабатываю приложение, которое будет получать HTML и изображения от пользователя и сохранять их в хранилище данных. Пока эта часть сделана. Как я могу использовать эти изображения в качестве ресурсов HTML-страницы, когда пользователь запрашивает определенный?
Обслуживание изображений для HTML из хранилища данных GAE
Ответы (1)
Если вы непреклонны в том, что хотите хранить изображения в хранилище данных GAE (обычно это не лучший подход — Google Cloud Storage), вы можете предоставить их, например, с записью handlers:
с помощью
handlers:
- url: /img/*
- script: images.app
а в images.py
у вас есть что-то вроде
app = webapp2.WSGIapplication('/img/(.*)', ImgHandler)
с ранее в том же файле, что-то вроде:
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 и обслуживая их непосредственно оттуда... обслуживать их непосредственно из хранилища данных возможно (при условии, что они довольно малы, поскольку объект GAE ограничен максимальным размером 1 МБ!), но обычно это не оптимально.