- - PR -
JSPを使ってFileをDownloadするには?
1|2|3|4
次のページへ»
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-06-22 18:45
SaturdayプログラマーのKlugerです。はじめまして。いつも勉強させていただいております。
Servlet+JSPを使って、サーバー上のファイル(とりあえずZip形式)をDownloadする仕組みを作ろうとしているのですが、IEのエラーが多発します。たいてい一回目の処理ではエラーになり、二回目以降は正常に処理されます。 次のようなエラーです。 『このインターネットサイトを開くことが出来ませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。』 JSPは下記のようなコードです。
一回目のリクエストではFileが出来きれていないの?って感じかなぁと思うのですが、どなたか解決する方法やヒントをアドバイスしていただけないでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2002-06-22 23:28
ファイルをストリームから読み込んで、それをレスポンスのストリームに
書き出しているんですか。。。 サーバのディスク上に存在するファイルにリダイレクトする方が 簡単だと思うのですが、あえてストリームへ書き出しているのには 理由があるのでしょうか? | ||||
|
投稿日時: 2002-06-22 23:52
Dload なるものがなんなのかわかりませんからどうにも。
あと、「1回目」「2回目」もよくわからない。何をしたあとの1回目? それを除けば気になる点は3つ。 1.「改行」が入っている <%page もげもげ%>←ここ <... タグの間にある改行文字も送出されてしまいますよ。 <%page もげもげ%><%-- --%><.. しときましょう。 2. out.close() out.close() は、jsp の外側で行われるはずですから、へたにここでやらないほうがいいでしょう。 3. length は? バイナリを送るなら、Content-Length も送っといた方がいいでしょう。 [ メッセージ編集済み 編集者: しょむ 編集日時 2002-06-22 23:54 ] | ||||
|
投稿日時: 2002-06-22 23:58
Klugerです。さっそくの返答ありがとうございます。
ちょっとだけセキュアにしたかったのです。 リダイレクトするってことは、ようするにhttpでアクセスできる場所に放置するってことですよね。誰でも取れる場所に置くのはちょっと心配なので、サーブレット側でコントロールをしたかったのです。 | ||||
|
投稿日時: 2002-06-23 00:05
Klugerです。早速のアドバイスありがとうございました。感激です。
Dloadは、サーブレット側からファイル名とファイルパスを引き渡しているだけなので、特に特別なことはしておりません。サーブレット側では、アクセスしてきた人がそのリソース(ファイル)に対してアクセス件があるかどうか確認しています。 改行は、ここにポストするときについちゃっただけなので、本当のコードは入れていません。あと、closeとlengthは試してみます。 ありがとうございました。 | ||||
|
投稿日時: 2002-06-23 22:58
そう言えば・・・
JSPの定義済みoutオブジェクトってJSPWriterですよね。 Writer系ってことはテキストを吐き出す為のオブジェクトではないですか? Stream系のオブジェクトを取得して、それに書き出してみてはどうでしょう? | ||||
|
投稿日時: 2002-06-23 23:55
>JSPの定義済みoutオブジェクトってJSPWriterですよね。
>Writer系ってことはテキストを吐き出す為のオブジェクトではないですか? おぉ〜、そういやそうだ。きづかなんだ。 Writer 作って Header 出力しちゃってるから Stream はひっこぬけないような気も…。 とか考えると、すなおに Servlet にした方がよいような…。 | ||||
|
投稿日時: 2002-06-24 08:14
>JSPの定義済みoutオブジェクトってJSPWriterですよね。
>Writer系ってことはテキストを吐き出す為のオブジェクトではないですか? ダウンロード用出力にJSPWriterではなくjavax.servlet.ServletOutputStream を使えばいいのでは?? | ||||
1|2|3|4
次のページへ»
