- 締切済み
ダウンロードについて
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つしかなく、エンコードを指定できず、ファイル名が意図しないものになるのですが、うまい解決法はないでしょうか? バージョン上げるのは無理ですけど・・。 よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
日本語ファイル名のダウンロードにつていては、ここが参考になるかもしれません。
まず、formとaタグは全く別物です。 なので、formの中にリンクを記述してもformのアクションは実行されません。 この例だと、リンクをクリックされると表示されているURLが http://localhost/hoge/foo.jsp だとすると、 ${webapp}/download.zip を探しに行きます。 リンクタグでダウンロードすることはできます。 その場合、静的ファイルならwebappの公開フォルダに置いて、正しいURLを記述してやるか、 リンクタグにダウンロードするサーブレットをしていしてやるといいと思います。
お礼
回答ありがとうございます。 フルパスで指定するとダウンロードできました。 が、その他の点が解決できません。 ダウンロードするサーブレットとは、レスポンスからアウトプットストリームを取得して、ライトするやり方ですかね? それはそれでいいんですが、ファイル名が変になることや、ダウンロードをキャンセルした場合に例外が発生してることなど、問題があります。
補足
過去の質問、回答例から上記サイトを見てました。 ありがとうございます。 ただ、URLencoderは使用しているjavaのバージョンから引数は1つしかないので、このサイトで紹介されてるようにはできません。 まぁ日本語のファイル名にしなければいいんですけどね。 いろいろありがとうございます。