1

私たちの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番目に考えたアプローチは、上記の懸念に対処することです。

実装するのはどれほど難しいでしょうか、そしてこの点で私たちのアプローチはどうあるべきですか?また、同じタスクを実行するためのより良い、より簡単な方法が他にある場合は、提案してください。

4

4 に答える 4

2

私は、この種のことにはCommons-VFSを好みます。実際のファイル システム タイプを抽象化し、基になる実装に関係なく、標準インターフェイスで作業できるようにします。次に、実際のシステムの他のライブラリ、特に SFTP の JScsh に依存します。

于 2009-09-22T19:03:53.793 に答える
0

JSch 、JavaSecureChannelの使用をお勧めします。これは、SSH2の純粋なJava実装です。他のほとんどすべてのSSH2オプション(XForwarding、ポート転送など)に加えて、SFTPを実行するための良い例があります。多くのプロジェクトで使用しており、問題はありません。GSS-API(Kerberos)サポートをネイティブKerberos実装に結び付けても、うまく機能しました。これはBSDライセンスであるため、商用であろうとなかろうと、ライセンスに関して多くの問題は発生しないはずです。

JSchを使用してアプレットを作成するのは非常に簡単だと思います。最大の問題は、アプレットが署名されており、ローカルファイルの書き込み/読み取りと問題のSSHサーバーへの接続を許可されていることを確認することです。

于 2009-09-22T17:42:11.620 に答える
0

顧客は常に正しいので、この要件は私には悪いアーキテクチャを叫んでいますが、私はそれについて同情し、問題の解決を支援しようとします.

アプレットのアプローチは問題ありませんが、Web アプリとしては扱いにくいようです。そこにjavascript sftpライブラリがあります。これは sftp をサポートし、ファイル転送を提供するためだけにアプレットをポップアップ表示するよりも、はるかに自然な感覚を Web アプリケーションに与えます。無料ではありませんが、それほど高価でもありません。内部でアプレットを使用してファイル転送を行っていますが、ユーザーに Java 画面を表示していません。

于 2009-09-22T19:18:04.223 に答える
-1

SFTP または FTPS (FTP over SSL) のことですか? 本当に SFTP を使用している場合は、こちらをご覧ください: http://www.spindriftpages.net/blog/dave/2007/11/27/sshtools-j2ssh-java-sshsftp-library/comment-page-1/

于 2009-09-22T16:00:59.747 に答える