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

Firebase云存储on_object_finalized触发器通过通配符规则监控指定文件夹的实现方法咨询

Firebase云存储on_object_finalized触发器通过通配符规则监控指定文件夹的实现方法咨询

你好呀!其实完全可以通过通配符规则来实现监控指定文件夹的需求,你当前的写法问题出在path参数的语法上——Firebase Cloud Functions的存储触发器并不支持直接用path参数定义文件夹路径,而是需要通过conditions参数来配置路径匹配规则。

给你整理了正确的实现方式:

1. 基础的指定文件夹触发配置

你可以用conditions参数搭配通配符模式,来匹配目标路径下的文件:

@storage_fn.on_object_finalized(
    bucket='XXX.appspot.com',
    conditions=[
        # ** 匹配该文件夹下所有文件(包括子文件夹内的文件)
        ['matches', 'name', '{user_id}/audio/**']
    ],
    timeout_sec=540,
    memory=options.MemoryOption.GB_32
)
def process_audio_file(event: storage_fn.CloudEvent[storage_fn.StorageObjectData]):
    # 你的音频文件处理逻辑

如果只想匹配audio文件夹下直接存放的文件(不包含子文件夹),可以把通配符改成*:

['matches', 'name', '{user_id}/audio/*']

2. 额外添加音频文件格式过滤

既然你的函数是处理音频文件,还可以再加个条件过滤文件后缀,避免非音频文件触发函数,让逻辑更精准:

@storage_fn.on_object_finalized(
    bucket='XXX.appspot.com',
    conditions=[
        ['matches', 'name', '{user_id}/audio/**'],
        ['matches', 'name', '*.mp3'],
        ['matches', 'name', '*.wav'],
        ['matches', 'name', '*.m4a']
        # 可根据需要添加其他音频格式后缀
    ],
    timeout_sec=540,
    memory=options.MemoryOption.GB_32
)
def process_audio_file(event: storage_fn.CloudEvent[storage_fn.StorageObjectData]):
    # 你的音频文件处理逻辑

3. 提取通配符中的user_id值

如果需要在函数里获取路径中的user_id,可以通过解析文件路径实现:

def process_audio_file(event: storage_fn.CloudEvent[storage_fn.StorageObjectData]):
    file_full_path = event.data['name']
    # 拆分路径提取user_id
    user_id = file_full_path.split('/')[0]
    # 后续处理逻辑

备注:内容来源于stack exchange,提问作者Cheok Yan Cheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:28:22