Расшифруйте Blobkey App Engine в хранилище Google Cloud Storage Filename
У меня есть база данных, полная BlobKeys, которые ранее были загружены с помощью стандартного процесса Google App Engine create_upload_url(), и каждый из загрузки загрузились в ту же область Google Cloud Storage, установив аргумент gs_bucket_name
.
То, что я хотел бы сделать, - это расшифровать существующие blobkeys, чтобы я мог получить их имена файлов Google Cloud Storage. Я понимаю, что мог использовать gs_object_name свойство FileInfo class, за исключением:
Вы должны сохранить gs_object_name самостоятельно в своем обработчике загрузки или эти данные будут потеряны. (Остальные метаданные для объекта в GCS хранятся в GCS автоматически, поэтому вам не нужно сохранять это в обработчике загрузки.
Значение gs_object_name
Свойство доступно только в обработчике загрузки, и если я не сохранил его в это время, его потерял.
Кроме того, create_gs_key() не делает трюк, потому что вместо этого он берет имя файла хранилища google и создает blobkey.
Итак, как я могу взять blobkey, который был ранее загружен в ведро Google Cloud Storage через движок приложения, и получить его имя файла Google Cloud Storage? (Python)
Ответы
Ответ 1
Вы можете получить имя файла cloudstorage только в обработчике загрузки (fileInfo.gs_object_name) и сохранить его в своей базе данных. После этого он потерян и, похоже, не сохраняется в BlobInfo или других структурах метаданных.
Google говорит: В отличие от метаданных BlobInfo метаданные FileInfo не сохранялся в хранилище данных. (Ключа тоже нет, но вы можете создайте его позже, если необходимо, вызовите create_gs_key.) Вы должны сохранить имя gs_object_name в вашем обработчике загрузки, или эти данные будут быть потерянным.
https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass
Обновление: я смог декодировать SDK-BlobKey в Blobstore-Viewer: "encoded_gs_file: base64-encoded-filename-here". Однако реальная вещь не кодируется base64.
create_gs_key (filename, rpc = None)... Google говорит: "Возвращает зашифрованный ключ blob как строку". Кто-нибудь догадывается, почему это зашифровано?
Ответ 2
Из заявления в документах, похоже, что сгенерированные имена файлов GCS теряются. Вам нужно будет использовать gsutil для ручного просмотра вашего ведра.
https://developers.google.com/storage/docs/gsutil/commands/ls
Ответ 3
Если у вас есть blobKeys, вы можете использовать: ImagesServiceFactory. makeImageFromBlob