Google Cloud Storage JSON REST API - вставка и перечисление объектов в подкаталоге в корзине

Я пытаюсь понять, как: а) хранить / вставлять объект в облачное хранилище Google в подкаталоге б) перечислять содержимое данного подкаталога

Мне удалось решить, как получить здесь объект: Google Cloud Storage JSON REST API - получить объект, хранящийся в подкаталоге

Однако похоже, что та же логика не применима к этим другим типам вызовов.

Для магазина это работает:

https://www.googleapis.com/upload/storage/v1/b/bucket-name/o?uploadType=media&name=foldername%2objectname

но затем он сохраняет имя файла в GCS как имя_файла_папки, что не меняет функциональности, но на самом деле не идеально.

Если вы хотите перечислить объекты в корзине, не знаю, где должен быть синтаксис вложенного каталога: storage.googleapis.com/storage/v1/b/bucketname/o.

Любое понимание очень ценится.


person Lucas Stone    schedule 02.02.2021    source источник


Ответы (1)


Первое, что нужно знать, это то, что в GCS нет каталогов или папок. У него просто есть объекты с фиксированным префиксом. Есть функции, которые и gsutil, и пользовательский интерфейс использовали для создания иллюзии, что папки действительно существуют.

https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork

С этим в стороне: чтобы создать объект с префиксом, вам нужно URL-кодировать имя объекта, как я помню, %2F - это кодировка для /:

https://cloud.google.com/storage/docs/request-endpoints#encoding

Наконец, чтобы перечислить только объекты с общим префиксом, вы должны использовать параметр prefix:

https://cloud.google.com/storage/docs/json_api/v1/objects/list#parameters

Использование prefix=foo/bar/baz (после кодирования) перечислит все объекты в папке foo/bar/baz, обратите внимание, что это рекурсивно, оно будет включать foo/bar/baz/quux/object-name в результаты. Чтобы остановиться на одном уровне, вы также хотите прочитать о параметре delimiter.

person coryan    schedule 02.02.2021