• 締切済み

ダウンロードについて

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つしかなく、エンコードを指定できず、ファイル名が意図しないものになるのですが、うまい解決法はないでしょうか? バージョン上げるのは無理ですけど・・。 よろしくおねがいします。

みんなの回答

noname#18558
noname#18558
回答No.2

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

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

補足

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

noname#18558
noname#18558
回答No.1

まず、formとaタグは全く別物です。 なので、formの中にリンクを記述してもformのアクションは実行されません。 この例だと、リンクをクリックされると表示されているURLが http://localhost/hoge/foo.jsp だとすると、 ${webapp}/download.zip を探しに行きます。 リンクタグでダウンロードすることはできます。 その場合、静的ファイルならwebappの公開フォルダに置いて、正しいURLを記述してやるか、 リンクタグにダウンロードするサーブレットをしていしてやるといいと思います。

ratsbane
質問者

お礼

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

関連するQ&A

専門家に質問してみよう