Azure Logic Apps中使用Get blob content按前后缀匹配获取Blob内容的方法
Logic Apps 中按固定前后缀匹配Blob并获取内容的实现方案
Get blob content操作不支持在Blob路径参数中直接填入带*、?的通配符表达式——它要求传入的是完全匹配、唯一指向某个Blob的完整路径,直接填通配符必然导致路径找不到、操作执行失败,这也是前期测试通配符不生效的根本原因。
具体实现步骤
- 第一步:添加**List blobs(列出Blob)**操作
该操作的Path参数直接填入固定目录路径,也就是示例中的container/folder,无需填写任何文件名相关内容。操作会返回该目录下所有Blob的元数据列表(包含每个Blob的完整路径、纯文件名、修改时间等信息)。 - 第二步:对返回的Blob列表做规则筛选
从每个Blob的完整路径中拆分出不带目录层级的纯文件名片段,再套用两个匹配规则过滤:- 匹配固定前缀:使用
startsWith()函数判断纯文件名是否以myfile开头 - 匹配固定后缀:使用
endsWith()函数判断纯文件名是否以.txt结尾
注意:提前确认业务场景下该目录中符合这两个规则的Blob是否为唯一值;如果可能存在多个匹配结果,需要额外增加筛选逻辑(例如取最后修改时间最新的条目),避免后续取内容时取错文件。
- 匹配固定前缀:使用
- 第三步:获取匹配Blob的内容
直接将筛选出的Blob条目自带的完整路径字段,传入Get blob content操作的Blob路径参数即可。这个路径是无通配符的合法完整路径,完全符合该操作的参数要求,可以正常读取文件内容。
常见踩坑提醒
- 不要在List blobs的路径参数中填入文件名片段,该参数仅识别目录层级内容,填入文件片段会直接返回空列表
- 文件名匹配不要硬编码长度截取逻辑,优先用
startsWith和endsWith做规则判断,避免出现边界误匹配(比如把myfile123.txt.bak这类不符合要求的文件筛进来) - 如果不需要递归获取子目录下的Blob,记得关闭List blobs操作的递归列取开关,避免把其他目录下符合命名规则的文件误纳入筛选范围
内容的提问来源于stack exchange,提问作者Jamee L
相关产品推荐
相关产品推荐

