Удалите папку в Google Cloud Storage, используя nodejs gcloud api
Я использую gcloud nodejs api
получить доступ к Google Cloud Storage. Я могу сохранять / удалять / существующие файлы по отдельности, но я не нашел способа удалить папку или даже вывести список файлов в папке с помощью gcloud nodejs api
,
Я видел, как люди говорили, что иерархия папок в GCS - это не настоящая древовидная структура, а просто имена. Поэтому я попытался использовать подстановочный знак, чтобы соответствовать строке имени файла, но это не удалось.
Интересно, есть ли способ сделать это? Если нет, какой инструмент я должен использовать?
2 ответа
Код для перечисления файлов в каталоге должен выглядеть примерно так:
bucket.getFiles({ prefix: 'directoryName/' }, function(err, files) {})
И удалить:
bucket.deleteFiles({ prefix: 'directoryName/' }, function(err) {})
Вместо того, чтобы использовать gcloud nodejs api
Есть два других способа сделать это.
Использовать
googleapis
пакет для доступа к стандартному JSON API и XML API gcs.googleapis
является инструментом API более низкого уровня, который включает взаимодействие с облачными сервисами Google. Мы можем создавать / перечислять / удалять файлы на gcs. Документация и примеры:использование
childe_process
выполнитьgsutil
инструмент командной строки. Это не стандартный способ программного доступа к API Google, но все же жизнеспособное решение. Wildcard допускается при вводе команды. Обратите внимание, что это может не работать на Google App Engine. Вот пример.
Nodejs
var exec = require('child_process').exec;
exec("gsutil rm gs://[bucketname]/[directory ]/*" , function(error,stdout,stderr){});
Как предложил Стивен, используя стандартные gcloud
метод bucket.getFiles
а также bucket.deleteFiles
это самый желательный подход. Поскольку у gcs нет концепции каталогов, манипулирование несколькими файлами, очевидно, следует рассматривать как операцию на уровне сегмента.