- ベストアンサー
一括ダウンロードの方法
指定したURLの上のファイルをディレクトリごとダウンロードしたいんですが、どうすればいいんでしょうか? 全くの初心者の私の質問に答えるのは難しいと思いますので、 java製のソースを公開しているダウンローダもしくはダウンロードに関する講座サイトを教えていただくだけでもできればお願いしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
クライアントマシンのみで実現するのは無理ですよね。 だってサーバが送ってくれないとダメなんですから(笑) 「クライアントマシンのみで」というのは、 サーバ側は通常のHTTPサーバという意味だとするなら、 クライアントから飛ばすリクエストには1ファイルしか載りませんし サーバからのレスポンスも1ファイルしか返りませんよね。 なので、まずクライアントが、サーバ側のディレクトリの中に 存在するファイルの一覧を何らかの形で取得して、 それを1つずつ順にリクエストをかけていくしかないでしょう。 ファイルの一覧を取るにしても、DOSのDIRみたいなコマンドはないので サーバ側にファイルの一覧を記述したファイルを置いておいて それをクライアントアプリが読み込むしかないと思います。 その場合、サーバに届くのはHTTPのリクエストなので、 クライアントがJavaなのかどうかということは無関係ですね。 もしサーブレットが使えるなら、J2SEのjava.uti.zipパッケージの中に zipファイルを作るためのクラスがありますから、それを使って 特定のディレクトリの中のファイルをzipファイルにまとめて それをダウンロードさせるという方法があります。
その他の回答 (1)
これはJSP/サーブレットを使って、ということでしょうか? バイナリファイルのダウンロードは、基本的にresponse.getOutputStreamでServletOutputStreamインスタンスを取得し、このストリームを介してバイナリデータを送信します。ディレクトリごと送信するメソッドというのはないので、ディレクトリ内にあるファイルを一覧で取得し、1つずつ送信するしかないでしょう。 このあたりの機能の基本的な使い方はわかりますか? わからないと、これ以上は説明しようがないのですが・・。 とりあえず、@ITにバイナリファイルの入出力の記事がありますので、そちらを見てください。だいたいの流れがわかります。 http://www.atmarkit.co.jp/fjava/javatips/023jspservlet014.html
お礼
具体的な方法を教えていただきありがとうございました。
補足
>これはJSP/サーブレットを使って、ということでしょうか? 出来れば、クライアントマシンのみで実現したいんです。 やはりサーブレット無しでは無理でしょうか?
お礼
さすがに無責任だったので、 もう1冊本を買って勉強しようと思います。 回答ありがとうございました。
補足
>特定のディレクトリの中のファイルをzipファイルにまとめて >それをダウンロードさせるという方法があります。 どのようにすれば複数のネット上のファイルをまとめられるんでしょうか? なにぶん初心者なので、使い方が分からないんです。 サンプルみたいなものありませんか? もちろんクライアント側のもので。