我在我的項目中使用了spring批處理+ spring集成sftp。 我不想在應用程序啓動時觸發下載。我想下載過程中的第一步被觸發,繼續第二步所有的文件後下載到本地,不知道howt以實施春季整合sftp:如何手動觸發下載操作並在下載完成後執行其他操作?
0
A
回答
1
您需要使用<int-sftp:outbound-gateway>
與MGET
命令:
消息負載產生從
mget
操作是List<File>
對象 - 一個File對象列表,每個對象表示一個檢索到的文件。遠程目錄在
file_remoteDirectory
標題中提供,而在file_remoteFile
標題中提供了文件名的模式。
在Java DSL,它看起來像:
.handle(Sftp.outboundGateway(sessionFactory(), AbstractRemoteFileOutboundGateway.Command.MGET,
"payload")
.options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE)
.regexFileNameFilter("(subSftpSource|.*1.txt)")
.localDirectoryExpression("'" + getTargetLocalDirectoryName() + "' + #remoteDirectory")
.localFilenameExpression("#remoteFileName.replaceFirst('sftpSource', 'localTarget')"))
其中是遠程目錄評估規劃環境地政司表示。在這種情況下,它只是真的請求消息的有效載荷: - 在XML定義expresion="'myRemoteDir'"
String dir = "sftpSource/";
registration.getInputChannel().send(new GenericMessage<>(dir + "*"));
如果你的遠程目錄是靜態的,而不是從批處理改變,你可以使用它作爲LiteralExpression
。
由於此MGET命令的結果爲List<File>
,因此您應該考慮使用Splitter
作爲下一步。
相關問題
- 1. 開始下載並執行操作?
- 2. JSF 2 - 如何在複合組件子項完成操作後執行操作?
- 3. 如何等待圖像,直到完成加載執行下一個操作
- 4. SFTP下載沒有完成
- 5. 在完成操作後執行某些操作
- 6. 片段正確加載完成後執行操作
- 7. startActivity完成後執行某些操作
- 8. 節點Js下載操作
- 9. 如何在春季註銷前執行操作?
- 10. 如何在所有下載完成後觸發一個功能
- 11. C#在BackgroundWorker後執行一些操作RunWorker完成完成
- 12. MongoDB C# - 如何執行以下操作
- 13. 其他操作如下微調選擇
- 14. ORMLite下的SQLite不允許在事務完成後執行任何操作
- 15. 如何在python子進程完成後執行post操作
- 16. 在執行下一步操作之前請等待winform加載?
- 17. 下載管理器完成多次下載後如何執行任務
- 18. 在WKWebView完成加載特定url頁面後執行某些操作
- 19. 下載完成時觸發javascript代碼
- 20. 下載在Swift中完成後發送?
- 21. 在加載時執行backing bean操作?
- 22. 如何在NSOperationQueue中設置優先級以執行下一個操作直到完成前一個操作?
- 23. label.setVisible(true)在處理完成後纔會執行任何操作
- 24. 發起POST請求,執行操作,然後完成發佈請求 - 如何?
- 25. 等待對象完成移動,然後執行操作
- 26. 如何在下載文件之前在Alfresco中執行自定義操作?
- 27. 下拉OnSelect和OnChange操作未觸發
- 28. Apache Cassandra如何完成聚合操作?
- 29. 如何觸發「下拉列表」的下拉操作?
- 30. 如何使用C#在FTP上執行多個上傳/下載操作
嗨@加里,我已經嘗試使用mget命令在[這篇文章] outbound-gateway(https://stackoverflow.com/questions/46707544/how-to-use-sftp-outbound-gateway-mget-command下載文件),我想使用java配置,但我仍然面臨一些問題,我已經閱讀了docs和github的例子,但是我仍然無法解決它,你能不能用java配置給一些mget檢查? TIA –