Как установить пользовательский ключ для файлов, загружаемых в appengine с помощью blobstore

Следуя инструкциям appengine по загрузке большого двоичного объекта, я могу загрузить/скачать картинки.

Но я хочу найти метод для предотвращения дубликатов, поэтому я хотел бы знать, возможно ли иметь собственный ключ для объектов blobstore или использовать MD5 как Ключ, чтобы по крайней мере я мог перезаписать существующие файлы.

Есть ли какой-нибудь крюк или какой-то дополнительный параметр, который я мог бы использовать в blobstore.create_upload_url, чтобы указать собственный ключ для загруженного объекта?


person nbari    schedule 20.03.2014    source источник


Ответы (2)


Google отказывается от blobstore. Вы также можете использовать клиентскую библиотеку Cloudstorage.

Некоторые из преимуществ:

  • начиная с версии 19.0 бесплатная квота в корзине GCS по умолчанию
  • использовать папки и имена файлов, и вы можете перезаписывать (заменять) существующие файлы.
  • создайте serve_url для изображений и других файлов, которые будут обслуживаться Google
  • и более ..

Я создал эту суть, чтобы показать, как использовать GCS в Google App Engine.

person voscausa    schedule 20.03.2014

Ключи BLOB-объектов гарантированно уникальны. Вам не нужно ничего делать для этого.

РЕДАКТИРОВАТЬ:

Если вы хотите переписать большой двоичный объект, вам нужно знать ключ большого двоичного объекта, который вы хотите обновить где-то в своей модели. Если вы хотите, вы также можете сохранить хэш или любой другой идентификатор (например, имя файла) в своей модели. Затем вы можете сравнить хэш нового файла, например, с хешами ранее сохраненных файлов и решить, хотите ли вы удалить повторяющуюся запись.

person Andrei Volgin    schedule 20.03.2014
comment
Как я могу изменить поведение, чтобы иметь свои собственные ключи? Например, если я использую md5 в качестве ключа, я могу загружать один и тот же файл несколько раз, но в конце будет только одна запись вместо множества записей с одинаковыми данными. Любые идеи? - person nbari; 20.03.2014
comment
Вы не можете изменить это поведение. Вам нужно запомнить ключ большого двоичного объекта, который вы хотите переписать/удалить. Я обновил свой ответ. - person Andrei Volgin; 20.03.2014