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

如何借助Cloud Functions与Cloud Storage Trigger判断对象是否为文件夹

准确判断Cloud Storage新建对象是否为文件夹类型

你之前依赖contentType: application/octet-stream判断文件夹的方式不可靠,因为很多二进制文件(比如.drawio)也会使用这个通用MIME类型,导致误判。

Cloud Storage本身没有真正的文件夹概念,所谓的“文件夹”分两种情况:

  • 显式文件夹对象:用户手动创建文件夹时,GCS会生成一个名称以/结尾、大小为0字节的占位对象,这类对象会触发onObjectFinalized事件。
  • 隐式路径前缀:上传文件(比如docs/image.png)时自动生成的路径前缀docs/,GCS不会创建对应的对象,因此不会触发你的触发器。

只需针对显式文件夹对象做判断即可,修改后的代码如下:

export const resizeImage = onObjectFinalized({
}, async (event: CloudEvent<StorageObjectData>) => {
        const fileBucket = event.data.bucket;
        const filePath = event.data.name as string;
        const fileSize = parseInt(event.data.size || '0', 10); // 转换为数字,默认值设为0

        // 准确判断是否为文件夹对象
        if (filePath.endsWith('/') && fileSize === 0) {
            return logger.log("Object created is a folder. Skipping processing.");
        }
/* ...more code */)}

这个判断逻辑通过两个核心特征锁定文件夹对象:名称以/结尾、文件大小为0,完全避免了MIME类型带来的误判问题。

内容的提问来源于stack exchange,提问作者Lucas David Ferrero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:41:01