当前位置: 首页 > 知识库问答 >
问题:

spring集成sftp:下载完成后,如何手动触发下载操作并执行其他操作?

弘承运
2023-03-14

我正在我的项目中使用spring批处理spring集成sftp。我不希望在应用程序启动时触发下载。我希望下载过程在步骤1中触发,并在所有文件下载到本地后继续执行步骤2,不确定如何实现这一点

共有1个答案

沙海
2023-03-14

您需要使用<代码>

mget操作产生的消息有效负载是List

远程目录在file\u remoteDirectory标头中提供,文件名的模式在file\u remoteFile标头中提供。

https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/sftp.html#sftp-outbound-gateway

在JavaDSL中,它看起来像:

.handle(Sftp.outboundGateway(sessionFactory(), AbstractRemoteFileOutboundGateway.Command.MGET,
                        "payload")
                        .options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE)
                        .regexFileNameFilter("(subSftpSource|.*1.txt)")
                        .localDirectoryExpression("'" + getTargetLocalDirectoryName() + "' + #remoteDirectory")
                        .localFilenameExpression("#remoteFileName.replaceFirst('sftpSource', 'localTarget')"))

其中,有效负载是用于远程目录评估的SpEL表达式。在这种情况下,它实际上只是请求消息的有效负载:

String dir = "sftpSource/";
registration.getInputChannel().send(new GenericMessage<>(dir + "*"));

如果远程目录是静态的,并且没有从批处理中更改,则可以将其用作XML定义中的LiteralExpression。

因为这个MGET命令的结果是一个列表

 类似资料:
  • 问题内容: 我正在尝试捕获下载完成事件,但是我的BroadcastReceiver没有收到它们。这是接收者: 这是清单: 有人知道怎么了吗? 问题答案: 为您的接收者使用完整的软件包名称,例如 Add 可以从其应用程序的来源接收消息。 更改的名称在以 仅当从您的应用程序使用进行注册时,才会触发接收器 要排队的代码下载:

  • 下载压缩包,请自行补齐里面的jar包

  • 问题内容: 我有一个非常简单和标准的PHP强制下载脚本。 我如何检查是否/何时完成下载以便在客户端通知用户?我什至不需要实时显示进度,我只对非常具体的事件感兴趣:“下载完成时”。根据我的研究,由于没有事件,因此似乎必须从服务器端确定它,而且我认为不可能拦截浏览器事件。 因此,似乎最好的选择是通过某种客户端/服务器端交互比较发送到总字节的字节。我该如何检查从服务器发送的字节以进行PHP强制下载?是否

  • 问题内容: 检测下载是否完成的最佳方法是什么,因为此后我想更新数据库。 我尝试了PHP手册中的一些代码,但对我来说并没有多大作用: 问题答案: 但这并不能真正告诉您用户是否已完成下载。当 您 完成向用户发送字节后,它将告诉您,但它并没有说明用户实际收到了多少字节。 实际上,PHP(服务器端而非客户端语言)无法真正检测文件下载何时完成。最好的办法是在下载开始时将下载记录在数据库中。如果您绝对,完全和

  • 因此,在下载和打开文件之间的某个位置,我需要一个if语句来检查它是应该继续还是等待文件。

  • 问题内容: 在下面的代码中,我试图一次性进行多个(大约10个)HTTP请求和RSS解析。 我在需要访问和解析结果的URI数组上使用标准构造。 码: 我了解一次调用函数时,应该使用回调。但是,在此示例中,我唯一想到使用回调的方法是调用一个函数,该函数对被调用的次数进行计数,并且仅在被调用的次数与看起来很hacky 的次数相同时才继续。 所以我的问题是, 在node.js中处理这种情况的最佳方法 是