node.js - 如何使用 NodeJS 列出 GCS 存储桶中的目录

标签 node.js google-cloud-platform google-cloud-storage

I 如果您使用的是 NodeJS GCS 客户端库并想列出存储桶中的目录,您该怎么做?

最佳答案

首先通过运行将 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);

关于node.js - 如何使用 NodeJS 列出 GCS 存储桶中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43829299/

相关文章:

google-cloud-platform - 用于获取标签列表的 GCP API

node.js - 如何使用 Node API 从 Google Cloud Storage 返回指定的图像大小?

google-cloud-storage - 如何使用 gsutil 计算存储桶文件夹中的文件数

c# - 谷歌云存储 InsertMediaUpload 服务 BaseUri ArgumentNullException

javascript - 如何在 meteor 中使用非 npm node_module?

node.js - BigQuery Node.js API 权限错误

git - Phonegap 使用命令行工具添加插件

node.js - Angular 7/8 - 如何在应用程序组件中获取 url 参数

google-app-engine - 是否可以从另一个项目连接到 Google Cloud Memorystore?

google-cloud-platform - 继续中断 rsync 后 .gstmp 文件上的 gsutil rsync 错误