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

如何使用ADF复制活动对Blob存储中的文件按类型分类存放

ADF按文件类型分类存储到不同容器的可行实现方案

原if+or方案失效的常见原因

  • 未做大小写统一处理:.PNG、.Png等大小写后缀无法匹配预设规则
  • 多or拼接逻辑冗余易出错:多个or条件嵌套时优先级处理不当会导致判断失效
  • 文件后缀提取错误:文件名包含多个.时,错误取到第一个.后的内容而非最后一段

方案1:单个复制活动+动态目标容器(最简便,适合分类规则少的场景)

无需多分支判断,直接在目标数据集的容器字段配置动态表达式即可实现自动匹配:

  • 首先在源数据集配置中开启文件路径列功能,选择输出文件名/完整路径,用于提取文件后缀
  • 目标数据集的容器名称不写固定值,替换为动态表达式,参考写法:
@if(
    contains(createArray('jpeg','png'), toLower(split(item().name, '.')[-1])), 
    'ContainerA', 
    if(
        contains(createArray('csv','xml','doc'), toLower(split(item().name, '.')[-1])), 
        'ContainerB', 
        'OtherContainer'
    )
)

说明:表达式中用split(item().name, '.')[-1]提取文件最后一段后缀,toLower()统一转小写避免大小写匹配失败,contains()批量判断后缀是否在对应分类数组中,比多or拼接更简洁不易出错。


方案2:Get Metadata+Filter+分支复制(适合分类规则复杂、需对不同类型文件做额外处理的场景)

  • 第一步添加Get Metadata活动,连接源Blob存储,配置获取指定路径下所有子项的文件名列表,多层级目录需开启递归选项
  • 第二步添加对应分类数量的Filter活动,分别筛选不同类型的文件,以两类分类为例:
    • 图片类筛选条件:contains(createArray('jpeg','png'), toLower(split(item().name, '.')[-1]))
    • 文档类筛选条件:contains(createArray('csv','xml','doc'), toLower(split(item().name, '.')[-1]))
  • 第三步在每个Filter活动的成功输出后接ForEach活动,遍历筛选出的文件列表,分别复制到对应目标容器即可

内容的提问来源于stack exchange,提问作者Michelle Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:04