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

如何用Node.js在GCP Cloud Storage桶内创建空文件夹?

GCS创建空文件夹的正确方法

首先明确:Google Cloud Storage 没有真实的文件夹结构,所谓的"文件夹"都是通过对象的前缀(路径)来模拟的。要创建一个空"文件夹",实际上是创建一个名称以/结尾的空对象。

你的代码报错是因为bucket.upload()方法需要传入本地文件的路径,你传空字符串导致系统找不到对应文件,所以抛出ENOENT错误。

修正后的单文件夹创建代码

使用bucket.file().save()方法直接创建带/后缀的空对象,无需本地文件:

import { Storage } from '@google-cloud/storage';

const bucketName = 'my-bucket-101';
const storage = new Storage({ keyFilename: './key.json' });
const bucket = storage.bucket(bucketName);

export async function addFolder(folderName) {
  // 构造文件夹路径,必须以/结尾
  const folderPath = `categories/${folderName}/`;
  // 创建空对象模拟文件夹
  await bucket.file(folderPath).save('');
  console.log(`空文件夹 ${folderPath} 创建成功`);
}

批量创建200个分类文件夹的示例

如果要批量创建200个,可以用循环+异步控制(避免并发过高):

export async function addBulkFolders() {
  const totalFolders = 200;
  // 可选:限制并发数,避免触发GCS请求频率限制
  const concurrencyLimit = 10;
  let currentBatch = [];

  for (let i = 1; i <= totalFolders; i++) {
    const folderName = `category-${i}`;
    currentBatch.push(addFolder(folderName));
    
    // 达到并发限制或循环结束时,等待当前批次完成
    if (currentBatch.length === concurrencyLimit || i === totalFolders) {
      await Promise.all(currentBatch);
      currentBatch = [];
    }
  }
  console.log('200个分类文件夹全部创建完成');
}

关键说明

  • 必须确保对象路径以/结尾,否则GCS会把它当成一个普通文件,而不是文件夹前缀。
  • save('')写入空内容,这样就生成了一个大小为0的对象,用来模拟空文件夹。
  • 批量创建时建议控制并发数,避免超过GCS的请求配额(默认配额足够,但谨慎起见)。

内容的提问来源于stack exchange,提问作者Ninja-aman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:10:15