为什么RemoteFileTemplate忽略setFileNameExpression中设置的值?

时间:2015-04-14 13:36:30

标签: java spring expression filenames spring-integration

使用Spring-integration 4.1.1.RELEASE将消息有效负载中的文件上传到远程sFtp共享。我正在使用像这样初始化的sFtpRemoteFileTemplate:

Expression remoteDirectoryExpression = new  LiteralExpression("si.sftp.sample");
SpelExpressionParser parser = new SpelExpressionParser();
Expression fileNameExpression = new LiteralExpression("foo.txt");

template = new SftpRemoteFileTemplate(sessionFactory);
template.setCharset("UTF-8");
template.setBeanFactory(beanFactory);
template.setAutoCreateDirectory(true);
template.setRemoteDirectoryExpression(remoteDirectoryExpression);
template.setFileNameExpression(fileNameExpression);
template.setTemporaryFileSuffix(".writing");
template.setUseTemporaryFileName(true);
template.afterPropertiesSet();

但是,无论我放在fileNameExpression中的文字都被忽略,上传的文件将始终命名为与原始文件相同。结果总是如下:

Expression fileNameExpression = parser.parseExpression("payload.name");

为什么?我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

setFileNameExpression仅用于GET操作。

尝试使用setFileNameGenerator代替。这个完全适用于PUT