繁体   English   中英

如何仅列出GCS中的文件而不是文件夹?

[英]How to list only files not folder in GCS?

我是 GCS 的新手。 我正在尝试列出“文件夹”中的文件并下载它们,但是我的列表将文件夹名称返回为索引 0。

如何只列出文件名而不列出目录名? 或者我应该在我取回列表后直接 shift() 数组?

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)
});
}

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 中存储桶中的一个对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM