You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js获取Google Cloud Storage文件夹中的文件列表?

解决特定文件夹内文件元数据的获取问题

我之前也碰到过这个困扰!其实云存储服务里的“文件夹”并不是真实的层级目录结构,本质上是文件路径前缀——所有所谓的文件夹都是通过文件名里的路径字符串来模拟的。所以要获取特定“文件夹”下的文件,核心思路就是用前缀过滤,而GetFilesRequest里其实藏着对应的配置项,只是文档可能没直接用“文件夹”这个词来标注。

具体实现步骤

  • 找到GetFilesRequest中的prefix参数:把目标文件夹的路径作为前缀传入,注意要以斜杠/结尾,这样能避免匹配到类似my-folder-abc这种名字相近的其他前缀文件。
  • 可选:添加delimiter: '/'参数,这样可以只返回当前文件夹下的文件,不会包含子文件夹里的内容(如果有多层目录的话)。

代码示例(以Google Cloud Storage Node.js SDK为例)

const { Storage } = require('@google-cloud/storage');
const storage = new Storage();

async function fetchFolderFileMetadata(bucketName, targetFolder) {
  // 确保目标文件夹路径以斜杠结尾
  const normalizedFolder = targetFolder.endsWith('/') ? targetFolder : `${targetFolder}/`;
  
  const requestOptions = {
    prefix: normalizedFolder,
    delimiter: '/' // 可选:排除子文件夹内容
  };

  const [files] = await storage.bucket(bucketName).getFiles(requestOptions);
  
  // 提取元数据
  const fileMetadataList = files.map(file => ({
    name: file.name,
    size: file.metadata.size,
    updated: file.metadata.updated,
    contentType: file.metadata.contentType
  }));

  return fileMetadataList;
}

原理说明

云存储是扁平化的对象存储结构,没有真正的层级目录。当你创建“文件夹”时,本质上是创建了一个空的、名字以斜杠结尾的对象。而prefix参数就是告诉SDK:只返回文件名以指定字符串开头的对象,这样就精准定位到了目标“文件夹”下的所有文件。

如果用的是其他云存储服务(比如AWS S3),逻辑也是完全一致的,只是SDK的方法名和参数名可能略有差异,比如S3的listObjectsV2方法同样支持Prefix参数来过滤路径。

内容的提问来源于stack exchange,提问作者Pier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:16:23