Есть ли способ перезаписать существующие большие двоичные объекты в blobstore

#image #google-app-engine #blobstore

#изображение #google-app-engine #blobstore

Вопрос:

Я использую высокопроизводительную функцию обслуживания изображений в App Engine для обслуживания изображений из blobstore. Однако я бы хотел, чтобы пользователи могли изменять эти изображения (например, поворачивать, обрезать и т.д.), А затем записывать эти изменения обратно в blobstore, перезаписывая исходный blob. Я знаю, что могу записывать новые двоичные объекты в blobstore, как описано здесь: http://code.google.com/appengine/docs/python/blobstore/overview.html#Writing_Files_to_the_Blobstore

но я не вижу способа перезаписать существующие большие двоичные объекты. Возможно ли это в App Engine?

Мой вариант использования выглядит следующим образом:

  1. Пользователь загружает изображение, и app engine генерирует ссылку через get_serving_url
  2. Затем пользователь может использовать эту ссылку за пределами моего приложения, например, ссылку на нее в своем блоге для отображения изображения
  3. Если это изображение будет изменено позже в моем приложении (поворот и т.д.), Я бы хотел, чтобы их ссылка на изображение отражала эти изменения

Ответ №1:

Файлы, хранящиеся в blobstore, являются неизменяемыми, после их записи они не могут быть изменены (только обслуживаются или удаляются).

Ответ №2:

Я думаю, вам следует попытаться создать свой собственный контроллер для создания файла, обслуживающего URL-адрес — В хранилище данных каждая запись BLOB-файла имеет собственный идентификатор (вы управляете им) и идентификатор версии — для первой загрузки установите новый идентификатор и версию — Когда пользователь изменит ваше изображение, сохраните новый blobstore, сохраните ID и установите новое поле версии

В обслуживающем контроллере генерируется ссылка по идентификатору, когда пользователь вызывает ее, получает новейшую версию для обслуживания

Это просто мое мнение, надеюсь, оно полезно!