[英]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.