Spring Integration-在网关中使用文件名

时间:2018-10-09 07:31:40

标签: spring spring-integration gateway

我对弹簧集成有疑问。

我想在ftp服务器上发出请求以检索文件名 (在命令行:ls“文件名”)

但是我无法动态恢复文件名。 我了解到有一个带有有效载荷或标头的故事,但我不能

这就是我所拥有的:

查看我的控制器,我使用它:

[XmlRoot(nameof(Trias), Namespace = "http://www.vdv.de/trias")]
public class Trias
{

    [XmlAttribute("version")]
    public string Version { get; set; }

    [XmlAttribute("xmlns")]
    public string Xmlns { get; set; }

    [XmlAttribute(Namespace = "http://www.siri.org.uk/siri")]
    public string Siri { get; set; }
}

在我的FTP文件中:

private FtpConfig.MyGateway gateway;
...
gateway.fichierExist(filename);

我也尝试使用标头,但是我什么也不能做...

谢谢。

(对不起,我的英语,我是法语)

2 个答案:

答案 0 :(得分:0)

请参见Reference Manual中的null命令说明:

  

此外,以与constructor(props) { super(props); this.state = { visible: true } } componentDidMount() { console.log('Parent did mount.'); document.getElementById('text_message').style.visibility = "hidden"; this.setState({visible: false}); } render() { const isVisible = this.state.visible; return ( <div> <Card className="card-effects right"> {isVisible && <ProgressBar id="progress_Bar" name="progress_Bar"/>} <form className="card-form-signup" onSubmit={this.handleSubmit}> <Row> <label className="signup-header"><b>Signup to Authors Haven</b></label> </Row> <Row> <Input s={12} placeholder="Username" name="username" value={this.state.username} onChange={this.handleChange} validate> <Icon className="icon-styles">account_box</Icon></Input> </Row> <Row> <Input s={12} type='email' name="email" value={this.state.email} onChange={this.handleChange} placeholder="Email" validate><Icon className="green darken-4">email</Icon></Input> </Row> <Row> <Input s={12} type='password' name="password" placeholder="Password" value={this.state.password} onChange={this.handleChange} validate> <Icon className="icon-styles">vpn_key</Icon></Input> </Row> <Row> <Input s={12} type='password' name="confirm_password" placeholder="Confirm password" value={this.state.confirm_password} onChange={this.handleChange} validate> <Icon className="icon-styles">vpn_key</Icon></Input> </Row> <Row> <label >Already have an account ? </label> </Row> <Row> <Button className='button-effects' type="submit" value="Submit" > Sign up </Button> </Row> <Row> <label className="text-message" id="text_message" name="text_message"><i>text message</i></label> </Row> </form> </Card> </div> ); } 相同的方式提供文件名过滤。

     

由ls操作产生的消息有效负载是文件名列表或LS对象的列表。这些对象提供诸如修改时间,权限等信息。

inbound-channel-adapter标头中提供了ls命令所作用的远程目录。

在配置中缺少的是FileInfo来从中获取文件的事实。通常,我们建议像在file_remoteDirectory中那样在remote directory中有一个这样的目录,并为payload配置第三个ctor arg:

fichierExist(String filename)

根据FtpOutboundGateway中的逻辑,该表达式用作FtpOutboundGateway ftpOutboundGateway = new FtpOutboundGateway(ftpSessionFactory(), "ls", "payload"); 命令中远程目录的源。在您的情况下,这将成为您的FtpOutboundGateway网关的一个论据。

您确实可以在其中使用LS,但请确保指定适当的模式来过滤远程文件。

最后,经过过滤的请求目录中远程文件的名称将返回到网关的fichierExist(String filename)。没错

否则您的问题不清楚。

答案 1 :(得分:0)

感谢您的答复。

我更改了FtpOutboundGateway来添加“有效载荷”,但是我无法将有效载荷用于FtpSimplePatternFileListFilter。

我已经尝试过:

FtpSimplePatternFileListFilter filter = new FtpSimplePatternFileListFilter("filename"); 

FtpSimplePatternFileListFilter filter = new FtpSimplePatternFileListFilter("payload"); 

FtpSimplePatternFileListFilter filter = new FtpSimplePatternFileListFilter("payload.filename"); 

FtpSimplePatternFileListFilter filter = new FtpSimplePatternFileListFilter("payload['filename']");