我是 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)
});
}
最佳答案
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 中存储桶中的一个对象。
关于node.js - 如何在 GCS 中仅列出文件而不列出文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170935/