こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ダウンロードについて

jspに<a href="ファイル名">ダウンロード</a>
でそのファイルをダウンロードできると思ってました。
(ダウンロードするファイルはjspと同じフォルダにあります。)
が、「404ページが見つかりません」になります。
formにactionとmethod=postを指定してます。
jspは以下のような感じです。
<form action="アクション名" method="post">
<a href="./download.zip">ダウソ</a>
</form>
また、エクセルをダウンロードするのも同様にやると、
404になり、エクセルが起動し、ブラウザに内容が表示されたりすることもありません。
htmlに同じように書くとダウンロードの画面がでたり、エクセルが起動したりしてくれます。
過去の質問からサーブレットのresponseから、アウトプットストリームを取得し、エクセルの内容をそれに吐き出す?感じにするとダウンロード画面がでました。
<a href>だとダウンロードできないのでしょうか?
どうすればできるのでしょうか?
それと、アウトプットにwriteするやり方で、
res.setHeader("Content-Disposition", "attachment; filename=ファイル名");
で、ファイル名が日本語の場合、ダウンロードのファイル名が正しくないのですが、URLEncoderにはjavaのバージョンのせいか、encodeメソッドの引数が1つしかなく、エンコードを指定できず、ファイル名が意図しないものになるのですが、うまい解決法はないでしょうか?
バージョン上げるのは無理ですけど・・。
よろしくおねがいします。

投稿日時 - 2006-06-15 14:38:25

QNo.2217105

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

日本語ファイル名のダウンロードにつていては、ここが参考になるかもしれません。

参考URL:http://www.wsdeveloper.com/viewtopic.php?p=149

投稿日時 - 2006-06-16 12:18:56

補足

過去の質問、回答例から上記サイトを見てました。
ありがとうございます。
ただ、URLencoderは使用しているjavaのバージョンから引数は1つしかないので、このサイトで紹介されてるようにはできません。
まぁ日本語のファイル名にしなければいいんですけどね。
いろいろありがとうございます。

投稿日時 - 2006-06-16 12:54:47

ANo.1

まず、formとaタグは全く別物です。
なので、formの中にリンクを記述してもformのアクションは実行されません。
この例だと、リンクをクリックされると表示されているURLが
http://localhost/hoge/foo.jsp
だとすると、
${webapp}/download.zip
を探しに行きます。

リンクタグでダウンロードすることはできます。
その場合、静的ファイルならwebappの公開フォルダに置いて、正しいURLを記述してやるか、
リンクタグにダウンロードするサーブレットをしていしてやるといいと思います。

投稿日時 - 2006-06-15 14:48:42

お礼

回答ありがとうございます。
フルパスで指定するとダウンロードできました。
が、その他の点が解決できません。
ダウンロードするサーブレットとは、レスポンスからアウトプットストリームを取得して、ライトするやり方ですかね?
それはそれでいいんですが、ファイル名が変になることや、ダウンロードをキャンセルした場合に例外が発生してることなど、問題があります。

投稿日時 - 2006-06-16 00:04:08

あなたにオススメの質問