php エディタ Xiaoxin が Spring SFTP Integration を紹介します。これは、開発者がファイルをあるディレクトリから別のディレクトリに移動するタスクを処理するのに役立つ強力なフレームワークです。ローカル サーバー上でもリモート サーバー上でも、このフレームワークを使用するとファイルの移動と管理が簡単になります。開発者がファイル移動のロジックをカスタマイズし、さまざまな例外を処理できるようにする一連の API と構成オプションを提供します。エンタープライズレベルのアプリケーションでも個人プロジェクトでも、Spring SFTP Integration は検討する価値のある非常に実用的なツールです。
Spring intergationは初めてです。 SFTP サーバーからのファイルを user1/upload ディレクトリから処理して、user1/processed ディレクトリに移動する必要があります。私のコードは通常正常に動作しますが、2 つの問題があります:
アプリケーションを再起動すると、ディレクトリ user1/processed が以前に存在していたすべてのファイルとともに削除されます。毎回ディレクトリをクリアせずに、そこにさらにファイルを書き込みたいだけです。
アプリケーションを起動するたびに、ファイルを受信します (名前が表示され、コンソールに出力されるため) ディレクトリ内で処理するために移動された古いファイルを受信します。 winscp などの他のツールを介して sftp に接続すると、これらのファイルが表示されないため、これは非常に奇妙に思えます。古いファイルリストはどこかで引き継がれていますか?
Spring Integration の例 - sftp を使用して、コピー後にリモート サーバー内のファイルの名前を変更または移動する例を確認しましたが、非常に役に立ちました。
Spring intergation sftp の公式ドキュメントも確認しました。 回避策 起動時にリモート ディレクトリをクリアする方法がわかりません。この動作はユーザー側でデバッグする必要があります。しかし、古いファイルが表示される理由はわかります。処理後にリモートで名前を変更しますが、ファイルのローカル コピーは引き続き
source.setLocalDirectory(new File("/tmp/local")); に保存されます。名前変更または再起動が完了したら、クリーニングすることを検討してください。
SftpStreamingMessageSource を参照してロジックを置き換えることもできます:
https://docs.spring.io/spring-integration/reference/sftp/streaming.html
以上がSpring SFTP Intergation: 別のディレクトリへのファイルの移動の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。