I如果您正在使用NodeJS GCS客户端库并希望列出存储桶中的目录,那么该怎么做?
答案 0 :(得分:4)
首先运行以下命令将NodeJS GCS客户端库的依赖项添加到package.json
文件中:
npm -i @google-cloud/storage --save
然后将其添加到您的代码中以列出所有文件:
const storage = require('@google-cloud/storage');
...
const projectId = '<<<<<your-project-id-here>>>>>';
const gcs = storage({
projectId: projectId
});
let bucketName = '<<<<<your-bucket-name-here>>>>>';
let bucket = gcs.bucket(bucketName);
bucket.getFiles({}, (err, files,apires) => {console.log(err,files,apires)});
这会将带有完整路径的所有文件返回files
。
要仅列出目录,您必须解决客户端库中需要不使用自动分页的怪癖,然后向CB返回一个额外的参数。为此,请将代码更改为:
let cb=(err, files,next,apires) => {
console.log(err,files,apires);
if(!!next)
{
bucket.getFiles(next,cb);
}
}
bucket.getFiles({delimiter:'/', autoPaginate:false}, cb);
这将返回根路径下的目录列表,/
中的结尾为apires.prefixes
。
要仅列出foo/
目录下的目录,请使用以下代码:
let cb=(err, files,next,apires) => {
console.log(err,files,apires);
if(!!next)
{
bucket.getFiles(next,cb);
}
}
bucket.getFiles({prefix:'foo/', delimiter:'/', autoPaginate:false}, cb);