Mule FTP Connector 1.8.2列出文件时timestamp属性值异常求助
FTP连接器时间戳显示异常的原因及解决办法
问题原因
mule-ftp-connector 1.8.2版本存在时间戳解析逻辑bug:
- 当FTP服务器返回
MM/DD/YYYY(月/日/年)格式的时间时,连接器错误地按DD/MM/YY(日/月/两位年份)规则解析,直接导致日期、月份、年份全部错位。 - 比如你遇到的情况:服务器时间
06/02/2023 08:26:52被错误拆解为日=23、月=06、年份=2002,最终输出2002-06-23T08:26:52。 - 这个问题源于连接器依赖的Apache Commons Net库在处理非标准FTP时间格式时的兼容性问题,而FileZilla等客户端会自动适配不同时间格式,所以显示正常。
解决办法
- 升级连接器版本:1.8.2之后的mule-ftp-connector版本(如1.9.0及以上)已经修复了该解析bug,直接升级到与你的Mule runtime兼容的最新版本即可解决。
- 自定义解析逻辑:如果暂时无法升级,可在List组件后通过DataWeave或Groovy脚本重新解析原始时间字符串(从
attributes.raw中提取FTP返回的原始时间文本),替换错误的timestamp值。示例DataWeave脚本:%dw 2.0 output application/java fun parseCorrectTime(rawTime: String) = rawTime as DateTime {format: "MM/dd/yyyy HH:mm:ss"} // 匹配服务器实际时间格式 --- payload map ((file) -> file update { case attr at .attributes -> attr ++ {timestamp: parseCorrectTime(attr.raw.modifyTime)} } ) - 调整FTP服务器配置:若有权限,可将FTP服务器的时间返回格式改为
YYYY-MM-DD HH:mm:ss这类无歧义的标准格式,从根源避免解析错误。
内容的提问来源于stack exchange,提问作者Vish
相关产品推荐
相关产品推荐

