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

配置FtpOutboundGateway时无法排除指定文件,请求技术支持

问题解决:FTP下载排除.doc(含大写DOC)文件

你的问题出在两个核心点:

  • 过滤器类型误用:FtpSimplePatternFileListFilter 仅支持Ant风格通配符(比如*.txt),不支持正则表达式,你写的正则字符串会被当成Ant模式解析,自然无法生效。
  • 正则表达式本身不严谨:即便换成正则过滤器,原表达式^(?!.DOC$)也只能排除文件名恰好是.DOC的文件(注意.是正则的任意字符匹配,不是字面量的点),无法覆盖test.DOC这类带前缀的文件,也没包含小写.doc的情况。

正确解决方案

替换过滤器为RegexPatternFileListFilter(专门处理正则的文件过滤器),并使用精准的正则排除所有以.doc(大小写不敏感)结尾的文件:

@Bean
@ServiceActivator(inputChannel = "fetch")
public FtpOutboundGateway gateway() {
    FtpOutboundGateway gateway = new FtpOutboundGateway(sessionFactory(), "mget", "payload");
    gateway.setOptions("-R");
    gateway.setLocalDirectory(new File("/local/dir"));
    // 正则过滤器:排除所有以.doc/Doc/DOC等大小写形式结尾的文件
    gateway.setFilter(new RegexPatternFileListFilter("^(?!.*\\.(?i)doc$).*"));
    gateway.setRemoteDirectoryExpression(new LiteralExpression("/remote/dir"));
    return gateway;
}

正则表达式说明

^(?!.*\\.(?i)doc$).* 各部分作用:

  • (?i):开启不区分大小写模式,同时匹配doc/Doc/DOC等所有大小写组合
  • .*\\.(?i)doc$:匹配任意字符开头、以.doc(大小写不敏感)结尾的文件
  • (?!...):正向否定预查,直接排除上述匹配到的文件
  • 整个表达式最终匹配所有不以.doc(任意大小写)结尾的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:32:43