Как перечислить только файлы, а не папки в GCS? - PullRequest
0 голосов
/ 13 января 2019

Я новичок в GCS. Я пытаюсь перечислить файлы в «папке» и загрузить их, однако мой список возвращает имя папки в виде индекса 0.

Как мне перечислить только имя файла, а не имя каталога? Или я должен просто переместить () массив после того, как получу список обратно?

const prefix = 'testFiles/'; //contains jpgs
const delimiter = '/';
    const options = {
        prefix: prefix,
      };

      if (delimiter) {
        options.delimiter = delimiter;
      }

const [files] = await storage.bucket(bucketName).getFiles();

files.forEach((file, i) => {
    options.destination = `./downloads/${i}.jpg`
    console.log(options);
    file.download(options)
});
}

1 Ответ

0 голосов
/ 13 января 2019

Google Cloud Storage не имеет настоящих «папок». Вместо этого они эмулируются с использованием параметров префикса и разделителя для метода List Objects .

То, как вы делаете это правильно. Но когда вы перечисляете с префиксом, все объекты, начинающиеся с этого префикса, возвращаются вплоть до разделителя, если он указан. Это означает, что, как вы обнаружили, если объект «заполнитель каталога» (объект, оканчивающийся на /), он будет возвращен. Обратите внимание, что это также означает, что любые «подкаталоги» этого префикса также будут возвращены. Например, если у вас есть следующий список объектов в корзине:

testFiles/
testFiles/a
testFiles/b
testFiles/c/d
testFiles/v

Если вы вызываете объекты списка с prefix=testFiles/ и delimiter=/, вам будет возвращено следующее:

items =
  testFiles/
  testFiles/a
  testFiles/b
  testFiles/v
prefixes =
  testFiles/c/

Это потому, что testFiles/ на самом деле является объектом в вашем ведре в GCS.

...