如何在Azure Logic App中用switch函数判断文件名含指定字符并分类存储
Azure Logic App 文件名路由配置问题排查及解决方案
报错原因及修复方案
Switch 执行报错修复
你遇到的Switch报错是因为判断表达式选择了错误的参数:
"The execution of template action 'Switch' failed: The result of the evaluation of 'scope' action expression '@body('Get_file_content')' is not valid. It is of type 'Object' but is expected to be a value of type 'String, Integer'."
body('Get_file_content')返回的是文件内容对象,不符合Switch控件要求的字符串/数字输入格式。你需要将Switch的判断值替换为文件名字段,触发器自带的文件名参数表达式为triggerOutputs()?['headers/x-ms-file-name'],如果是前置“获取文件元数据”动作输出的文件名,对应参数为body('Get_file_metadata')?['Name']。
条件判断执行报错修复
不管是并行分支还是嵌套条件判断,只要将条件判断的左值替换为上面的合法文件名字段即可,完整的判断表达式参考:
- 精确匹配包含ABC:
contains(triggerOutputs()?['headers/x-ms-file-name'], 'ABC') - 忽略大小写匹配:
contains(toLower(triggerOutputs()?['headers/x-ms-file-name']), 'abc')
配置完成后不需要提前调用Get_file_content接口,先完成文件名判断,命中对应分支后再调用文件读取、复制操作即可降低不必要的接口调用开销。
多文件合并需求实现
如果需要将所有文件名含ABC的文件合并为单个文件存入Blob存储,按文件类型分两种方案:
- 纯文本、csv等无格式/轻格式文件:每次命中ABC文件名规则时,调用Azure Blob存储的
Append Block动作,将当前文件内容追加到指定的合并目标Blob中即可。 - Excel、Word等结构化格式文件:需要额外搭配Azure Function,在命中规则后将文件传到Function,用对应的文件处理库完成内容合并后再写入Blob存储。
相关截图
内容的提问来源于stack exchange,提问作者Nagesh Shastry
相关产品推荐
相关产品推荐



