为什么 RemoteFileTemplate 会忽略 setFileNameExpression 中设置的值?
Why is RemoteFileTemplate ignoring the value set in setFileNameExpression?
使用 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");
这是为什么?我错过了什么吗?
setFileNameExpression
仅用于 GET
操作。
请尝试使用 setFileNameGenerator
。这个正是 PUT
.
使用 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");
这是为什么?我错过了什么吗?
setFileNameExpression
仅用于 GET
操作。
请尝试使用 setFileNameGenerator
。这个正是 PUT
.