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

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包

  • 本文向大家介绍tomcat启动完成执行 某个方法 定时任务(Spring)操作,包括了tomcat启动完成执行 某个方法 定时任务(Spring)操作的使用技巧和注意事项,需要的朋友参考一下 第一步引入接口: ServletContextListener 如下图: 第二步:在web.xml文件中配置监听 以上这篇tomcat启动完成执行 某个方法 定时任务(Spring)操作就是小编分享给大家的全

  • 本文向大家介绍网页下载文件期间如何防止用户对网页进行其他操作,包括了网页下载文件期间如何防止用户对网页进行其他操作的使用技巧和注意事项,需要的朋友参考一下 做网页下载文件时,有时候文件过大,生成文件需要一段时间。这个时候要防止用户对网页进行其他操作,有种方法就是使用一个div覆盖在网页上,将网页锁住。 使用如上函数可以锁住页面防止多次操作,要直到下载框出现时取消锁屏。 在服务器端(cgi)中设置c

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

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