Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring SFTP-使用不同名称上载文件_Spring_Spring Integration_Spring Integration Sftp - Fatal编程技术网

Spring SFTP-使用不同名称上载文件

Spring SFTP-使用不同名称上载文件,spring,spring-integration,spring-integration-sftp,Spring,Spring Integration,Spring Integration Sftp,我正在使用spring将文件上传到远程服务器。我可以在远程服务器上传同名的本地文件。现在,我想将具有不同名称(example-test_20180601.txt)的本地文件(example-test.txt)上传到远程服务器。我现在正在使用下面的代码。如何修改此代码以更改文件名 @Configuration @EnableConfigurationProperties(GcaSftpConfig.class) @ConditionalOnProperty(prefix = "sftp.gca",

我正在使用spring将文件上传到远程服务器。我可以在远程服务器上传同名的本地文件。现在,我想将具有不同名称(example-test_20180601.txt)的本地文件(example-test.txt)上传到远程服务器。我现在正在使用下面的代码。如何修改此代码以更改文件名

@Configuration
@EnableConfigurationProperties(GcaSftpConfig.class)
@ConditionalOnProperty(prefix = "sftp.gca", name = "active", matchIfMissing = true)
public class GcaSftpUploadProcess 
{
    @Autowired
    private GcaSftpConfig config;

    @Bean(name = "gcaUploadSftpSessionFactory")
    public SessionFactory<LsEntry> sftpSessionFactory() 
    {
        DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
        factory.setHost(config.getUpload().getHost());
        factory.setPort(config.getUpload().getPort());
        factory.setUser(config.getUpload().getUser());
        factory.setPassword(config.getUpload().getPassword());
        factory.setTimeout(config.getUpload().getTimeout());
        factory.setAllowUnknownKeys(true);
        return factory;
     }

    @Bean(name = "gcaUploadSftpRemoteFileTemplate")
    public SftpRemoteFileTemplate sftpRemoteFileTemplate() throws Exception
   {
        SftpRemoteFileTemplate template = new SftpRemoteFileTemplate(sftpSessionFactory());
        template.setRemoteDirectoryExpression(new LiteralExpression(config.getUpload().getRemoteDirectory()));
        template.afterPropertiesSet();      
        return template;
    }

    public void upload(String localFileNameWithPath)
    {
        File file = new File(localFileNameWithPath);
        Message<File> message = MessageBuilder.withPayload(file).build();
        String send = sftpRemoteFileTemplate().send(message, FileExistsMode.REPLACE);       
    }
}
@配置
@EnableConfigurationProperties(GcaSftpConfig.class)
@条件属性(prefix=“sftp.gca”,name=“active”,matchIfMissing=true)
公共类GcaSftpUploadProcess
{
@自动连线
专用GcaSftpConfig配置;
@Bean(name=“gcaUploadSftpSessionFactory”)
公共会话工厂sftpSessionFactory()
{
DefaultSftpSessionFactory=新的DefaultSftpSessionFactory(true);
setHost(config.getUpload().getHost());
setPort(config.getUpload().getPort());
setUser(config.getUpload().getUser());
setPassword(config.getUpload().getPassword());
setTimeout(config.getUpload().getTimeout());
工厂。setAllowUnknownKeys(真);
返回工厂;
}
@Bean(name=“gcaUploadSftpRemoteFileTemplate”)
公共SftpRemoteFileTemplate SftpRemoteFileTemplate()引发异常
{
SftpRemoteFileTemplate=新的SftpRemoteFileTemplate(sftpSessionFactory());
setRemoteDirectoryExpression(新的LiteralExpression(config.getUpload().getRemoteDirectory());
template.afterPropertieSet();
返回模板;
}
公共无效上载(字符串localFileNameWithPath)
{
File File=新文件(localFileNameWithPath);
Message Message=MessageBuilder.withPayload(file.build();
字符串send=sftpRemoteFileTemplate().send(message,FileExistsMode.REPLACE);
}
}

远程文件模板具有以下选项:

/**
 * Set the file name generator used to generate the remote filename to be used when transferring
 * files to the remote system. Default {@link DefaultFileNameGenerator}.
 * @param fileNameGenerator the file name generator.
 */
public void setFileNameGenerator(FileNameGenerator fileNameGenerator) {

默认生成器使用
private volatile Expression=Expression_PARSER.parseExpression(“headers['”+FileHeaders.FILENAME+“']”)
这样您就可以在您的消息生成器上使用
.setHeader()
。非常感谢,我使用header修改了文件名,而且效果很好。