• 締切済み

ダウンロードについて

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

  • Java
  • 回答数2
  • ありがとう数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

  • ファイル出力で文字に

    現在プログラムからhtmlファイルを出力するプログラムを考えているのですが、出力する中で文字として「"」を出力したいのですが、どのようにしたらよいのでしょうか? たとえば "<form action="sendCheck.jsp" method="post">\n"; というのを表示したいのですが、 これでは      "<form action="sendCheck.jsp" method="post">\n";      ↑        ↑        ↑    ↑   ↑  ↑      ←---------→         ←----→    ←→ というように認識されてしまいうまくいきません。 どのようにしたらよいのでしょうか?

  • formでテキストとファイルタイプの同時受け渡し

    送信ボタンが押下されたとき、同じ遷移先の画面に「テキスト」「ファイル」タイプのデータを同時に受け渡せないことがわかりました。 (1) <form action="al.jsp" method="POST"> ⇒<input type="radio" name="1" value="2">の受け渡しが可能 (2) <form action="a.jsp" enctype="multipart/form-data" method="POST"> ⇒<input type="file" name="uploadfile" size="50">の受け渡しが可能 送信ボタン押下時に(1)テキスト(2)ファイルデータを同時に受け渡し、 a.jspからrequest.getParameter("1"); で値を取得する方法を教えて頂けないでしょうか。 現在は、 <form action ~> (1)input (2)input </form> の形式になっています。

    • ベストアンサー
    • HTML
  • サブミットの違い

    jspに <form action="XXaction" method="post"> <a href="XXaction" onclick="setData()">○○△</a> <input type="submit" value="○○" onclick="setData()"> </form> のように記述してます。 (実際はonclickのjavascriptも実装してます) ボタンを押すとpostとしてサブミットされるのに、 リンクをクリックするとgetでサブミットされます。 1.なぜgetになるのでしょうか? 2.どうしたらpostで飛ばせるでしょううか?

    • ベストアンサー
    • Java
  • jspからServletにデータを送るには?

    javaを使って開発をしているのですが、 jspからServletにデータを送るのってform型のsubmitでしかできないですか? <a href="~">で行うことは無理でしょうか? ちなみに、form型だと以下のようにしています <form method="post" action ="hogeServlet" > <input type="hidden" name="id" value =<%=hoge.getid() %>> <input type="submit" id="button1" value="ほげ"> </form>

  • formでテキストとファイルタイプの同時受け渡し

    以下の質問の続きなのですが、JAVAカテゴリを勧められましたのでこちらで質問させてください。 http://bekkoame.okwave.jp/question/selectbestanswer?aid=18429563&qid=6529772 使用言語はJSPです。 「送信ボタンが押下されたとき、同じ遷移先の画面に「テキスト」「ファイル」タイプのデータを同時に受け渡せないことがわかりました。 (1) <form action="al.jsp" method="POST"> ⇒<input type="radio" name="1" value="2">の受け渡しが可能 (2) <form action="a.jsp" enctype="multipart/form-data" method="POST"> ⇒<input type="file" name="uploadfile" size="50">の受け渡しが可能 送信ボタン押下時に(1)テキスト(2)ファイルデータを同時に受け渡し、 a.jspからrequest.getParameter("1"); で値を取得する方法を教えて頂けないでしょうか。 現在は、 <form action ~> (1)input (2)input </form> の形式になっています。 」

    • ベストアンサー
    • Java
  • リンク風sabmitのformをまとめられますか?

    フォームの送信を、リンク風に表示しているのですが、 複数ある場合、フォームタグをまとめることはできるのでしょうか? 下記にHTMLを記載しております。 <form name="word1" method="POST" action="word.php"> <input type="hidden" name="fruit" value="みかん"> </form> <form name="word2" method="POST" action="word.php"> <input type="hidden" name="fruit" value="りんご"> </form>    ・    ・    ・    ・ <form name="word100" method="POST" action="word.php"> <input type="hidden" name="fruit" value="ぶどう"> </form> <a href="javascript:document.word1.submit()">みかん</a> <a href="javascript:document.word2.submit()">りんご</a>    ・    ・    ・    ・ <a href="javascript:document.word100.submit()">ぶどう</a> と、1つ1つ書いていて長すぎると思っていたのですが まとめることは可能なのでしょうか? また、可能であれば、javascript等の知識が必要となるのでしょうか? ご教授宜しくお願い致します。

  • URLで動的な値をパラメータとして渡す場合

    JSPの勉強中の初心者です。 質問ですがURLで動的な値をパラメータとして渡す場合、どの ように記述するかわかりません。 <INPUT type=text name="coment"> <FORM action="MainController" method="post">  ---(A) <A href="MainController?coment=???>     ---(B)  (A)では値を渡す事の確認が出来たのですが (B)はどのように記述するかわからない状態です。 どうぞ教えて下さい。 

    • ベストアンサー
    • Java
  • a:visitedの色

    a.htmlにPOSTで行きたく、アンカーの色はa:visitedの色に従うものにしたいです。 以下のようにするとa:visitedの色に従わないものになってしまいました。 <form id=f action="a.html" method="POST"></form> <!--a href="a.html">次のページ</a--><br> <a href="javascript:f.submit()">次のページ</a>

  • 設定後の試し 見方 使い方

    input.phpというファイルで body内に <FORM action=output.php method=post>名前:<INPUT name=name> <INPUT type=submit value=送信> </FORM> というタグをいれ  output.phpというファイルで body内に  こんにちは、<?php print($_POST['name']);?>さん</form> というファイルをつくったが 正しく作動するかどうやって試すか教えてください。xamppでapache php は正しく設定してあります。phpファイルの保存場所に原因がありますか。 

    • 締切済み
    • PHP
  • データを送るのと値を渡すのを同時に行いたい

    a hrefでデータを送るのと値を渡すのを同時に行いたいのですがどうすればいいのでしょうか。 下記のa hrefでのデータを送りに<a href="http://www.localhost/hoge.php?name=papa&age=30"> のような固定された値を受け渡したいのですがどのようにすてばいいのでしょうか <form name="form1" action="test" method="post"> <input type="hidden" name="str" value="aaa"> <A HREF="javaScript:form1.submit();">ここの書き方がわかりません</A> <form>

専門家に質問してみよう