2013-10-02 2 views
12

У меня есть база данных, полная BlobKeys, которые ранее были загружены с помощью стандартного процесса Google App Engine create_upload_url(), и каждая из загрузок перешла в тот же кусок Google Cloud Storage установив аргумент gs_bucket_name.Декодирование Blobkey App Engine на Google Cloud Storage Filename

Что бы я хотел сделать, так это возможность декодирования существующих blobkeys, чтобы я мог получить их имена в Google Cloud Storage. Я понимаю, что я мог уже используют gs_object_name имущество от FileInfo class, за исключением:

Вы должны сохранить gs_object_name себя в обработчике загрузки или эти данные будут потеряны. (Другие метаданные для объекта в GCS хранится в ГКС автоматически, поэтому вам не нужно сохранить, что в обработчике загрузки.

Значение gs_object_name свойство доступно только в обработчике загрузки, и если я не сохраняя его в то время, то его потерянным.

Кроме того, create_gs_key() не делает трюк, потому что вместо этого берет имя файла для хранения Google и создает BlobKey.

Итак, как я могу взять blobkey, который ранее был загружен в хранилище Google Cloud Storage через движок приложения, и получить его в Google C громкое имя хранилища? (python)

+0

Насколько мне известно, вы можете переписать только blob, что означает чтение байта байтом и повторное его повторение к облачному хранилищу, аналогичному переименованию файла cloudstorage, но на этот раз сохранение пути cloudstorage вместо blobkey. BlobKeys сохраняет объекты cloudstorage, похоже, находится в состоянии «monkeypatch». Http: // StackOverflow.com/questions/18697418/softwareatically-emulating-gsutil-mv-on-appengine-cloudstorage-in-python – cat

ответ

6

Вы можете получить облачное хранилище данных файла только в обработчике загрузки (fileInfo.gs_object_name) и сохранить его в базе данных. После этого он потерян и, похоже, не сохраняется в BlobInfo или других структурах метаданных.

Google говорит: В отличие от метаданных BlobInfo, метаданные FileInfo не являются , которые сохраняются в хранилище данных. (Также нет ключа blob, но вы можете создать один позже, если необходимо, вызвав create_gs_key.) Вы должны сохранить имя gs_object_name в своем обработчике загрузки, или эти данные будут потеряны. .

https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass

Обновление: Я был в состоянии декодировать SDK-BlobKey в Blobstore-Viewer: "encoded_gs_file: base64-кодированной-файла-сюда". Однако реальная вещь не кодируется base64.

create_gs_key (имя файла, rpc = нет) ... Google говорит: «Возвращает зашифрованный ключ blob как строку». Кто-нибудь догадывается, почему это зашифровано?

+0

Вероятно зашифровано, поскольку оно включает токен доступа. –