私たちのJavaWebアプリケーションでは、顧客はいくつかの大きなファイルをSFTPサーバーにアップロードし、そこから直接ダウンロードしたいと考えています。顧客はサードパーティのツールを使用したくないので、アプリケーション自体にこの機能を使用したいと考えています。
ファイルのアップロード部分は、JFileUploadアプレットコンポーネントとライブラリによって処理されています。ファイルがアップロードされると、保存されているファイルの正確な場所を把握できます。そして、そのアップロードされたファイルは、ユーザーがクリックしてダウンロードするリンク(HTTPまたはFTPファイルリンクなど)としてユーザーに表示されます。
そのため、SFTPサーバーからファイルをダウンロードするための戦略を決定する必要があります。
1つのオプションは、要求を解析してからSFTPサーバーに接続し、HTTPサーバーを介してファイルをストリーミングすることです。ただし、ここでは、ファイルはSFTPではなくHTTP経由でダウンロードされ、さらにSFTPを使用する目的には役立ちません。
私が考えることができるもう1つのオプションは、アプレットを使用することです。これもアップロードのようなものです。SFTPファイルのリクエストがHTTPサーバーに届くとすぐに、ユーザーが保存パスを決定するためのディレクトリブラウザを備えたアプレットを含むページが起動します。ユーザーが保存場所を選択すると、ファイルはSFTPサーバーからその場所へのダウンロードを自動的に開始します。このようにして、接続は完全にSFTPになります。
2番目のアプローチがどれほど実行可能であるか、そして私が世話をしなければならない重要なことがあるかどうかを知りたいです。このタイプの操作に使用するのに最適なSFTPライブラリはどれですか?
さらに、言及された活動を行うための他のより良いオプションがあるかどうか私に知らせてください。
編集
この投稿は、SFTPサーバーからダウンロードする方法についての提案のリクエストのように見えます(見出しからのものかもしれませんが、他の見出しは考えられませんでした!!)。それを行うためのAPIに関する提案をありがとうございますが、私たちにとってより重要な問題は、SFTPサーバーからファイルをダウンロードするユーザーの要求がHTTPではなくセキュアSSHを介して行われる方法を理解することです。上記のAPIを使用すると、SFTPサーバーからHTTPサーバーのファイルシステムにファイルをダウンロードできますが、その後、同じファイルをユーザーのマシンにリダイレクトする必要がある場合は、HTTPを使用する必要があります。これは避けたいことです。
ユーザーのクライアントとSFTPサーバーの間でSFTPセッションを開始するアプレットを含むページを使用するという、2番目に考えたアプローチは、上記の懸念に対処することです。
実装するのはどれほど難しいでしょうか、そしてこの点で私たちのアプローチはどうあるべきですか?また、同じタスクを実行するためのより良い、より簡単な方法が他にある場合は、提案してください。