ファイルのダウンロードについて知りたい

このQ&Aのポイント
  • jspに<a href="ファイル名">ダウンロード</a>でファイルをダウンロードすることができません。アドレス指定方法を試行錯誤しています。
  • Windows XPでファイルのダウンロードについて教えてください。
  • ファイルダウンロード方法を教えていただけると幸いです。
回答を見る
  • ベストアンサー

ファイルダウンロードについて

jspに<a href="ファイル名">ダウンロード</a> でそのファイルをダウンロードできると思ってましたが ダウンロードすることができません。 下記の様にアドレスを指定して試行錯誤している状態です。。 <a href="./test.txt">1</a> <a href="sample.csv">2</a> <a href="C:\test.txt">3</a> <a href="C:\\test.txt">4</a> <a href="C:\sample.csv">5</a> <a href="C:\\sample.csv">6</a> <a href="./sample.csv">7</a> <a href="C:/test.txt">8</a> <a href="C://test.txt">9</a> <a href="C:\Program Files\Tomcat 6.0\webapps\servlet\pages\sample.csv">10</a> <a href="C:\Program Files\Tomcat 6.0\webapps\servlet\pages\sample.txt">11</a> <a href="C:\\Program Files\Tomcat 6.0\webapps\servlet\pages\sample.csv">12</a> <a href="C:\\Program Files\\Tomcat 6.0\\webapps\\servlet\\pages\\sample.csv">13</a> ちなみにOSはwindows XPです。 どなたかファイルのダウンロードについてご存じの方はご教授ください。

  • 39OK
  • お礼率9% (35/359)
  • Java
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

これは、IEなどブラウザが、ファイルの種類を検知して、 勝手に開いてしまう動作なので、 本来的には対処しようがないです。 なんとかやろうとする場合、 ○直接ファイルにリンクを張らない。 ○ダウンロード用のサーブレット/JSPを作成する。 ○リンクは、そのサーブレット/JSPを対象とし、  パラメータでファイルを指定する。 ○サーブレット/JSP側で指定されたファイルを読み込む。 ○サーブレット/JSPが読み込んだデータをレスポンスする。 という修正が必要です。 このレスポンスするときに、いくつか属性をヘッダーに設定する必要があります。 (属性)Content-disposition Content-disposition: attachment; filename=ファイル名 これでファイル・ダウンロードと認識させる。 http://www.tohoho-web.com/lng/b200005/00050035.htm http://www.stackasterisk.jp/tech/java/download01_01.jsp

39OK
質問者

補足

ご回答ありがとうございました。 http://www.stackasterisk.jp/tech/java/download01_01.jspのHPを 参考にプログラムを動かしてみたのですがファイルのダウンロードは できるようになりました。しかし、ダウンロードするファイルが何故か C:\Program Files\eclipseのディレクトリからとなってしまいます。 ダウンロードするファイルのディレクトリを自由に設定するには どのようにすればよいのでしょうか。お忙しいところ申し訳けありません がご回答いただけませんでしょうか。よろしくお願いいたします。

その他の回答 (1)

回答No.1

うーんと明らかに指定の仕方が、ローカルでのパス指定ですね。 C:\とか。。 Webサーバーを利用している以上、物理的に同じマシンでも、ローカルのパスを利用しません。 そのJSPファイルからみて相対パス(./xxxx.txtとか)や、Webアプリケーションのルートから見たパス(/aaa/bbb/xxxx.txtとか)を指定しないといけません。 あと、テキストファイル、Officeファイルは、ダウンロード画面が表示されずにブラウザ上で開かれる場合があります(ネットワーク的にはダウンロードしているのですが、保存ダイアログが表示されない) なので、 <a href="./test.txt">1</a> <a href="sample.csv">2</a> <a href="./sample.csv">7</a> これらがどう動作しているのか? JSPファイルと、対象のファイルの位置関係の補足をお願いします。

39OK
質問者

補足

ご回答ありがとうございました。ご指摘の点について補足します。 <a href="./test.txt">1</a> <a href="sample.csv">2</a> <a href="./sample.csv">7</a> とするとダウンロード画面が表示されずにブラウザ上で開かれてしまいます。 JSPファイルと、ダウンロード対象のファイルの位置関係についてですが JSPファイルを C:\Program Files\Tomcat 6.0\webapps\servlet\pages\sample.jspに置きます。 ダウンロードしたいファイルを C:\Program Files\\Tomcat 6.0\webapps\servlet\download\sample.csvと C:\download\sample.csvに置きたいと考えています。

関連するQ&A

  • サーブレットファイル 404

    OS はWindows 8で、JDK 6 、Tomcat 6です。 今朝からサーブレットやjspのリンクを叩いても 「 ~を開くことが出来ません。インターネットサイトのレポートによるとリクエストしたアイテムが見つかりませんでした。(HTTP/1.0 404) 」 としか出なくなりました。昨日までは表示されていたんですが・・・ http://localhost:8080/で左上に猫のロゴがあるページは表示されます。 例としてSample1.javaがありますが、 アドレスはhttp://localhost:8080/自分のフォルダ/servlet/Sample1で このサーブレットファイルはC:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\自分のフォルダ\WEB-INF\classesにあります。  web.xml(C:\Users\自分の名前\Desktop\プログラム\Java基本\java_prc\YJK_ish\WEB-INFの直下に有) を確認しても <servlet> <servlet-name>Sample1</servlet-name> <servlet-class>Sample1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample1</servlet-name> <url-pattern>/servlet/Sample1</url-pattern> </servlet-mapping> と入っています。 一応8080でバッティングさせないようにPHPで使う方のApache のサーバーもhttpd -k stopで止めておきました。 考えられる原因は何でしょうか? 他に確かめる方法は無いのでしょうか?

    • ベストアンサー
    • Java
  • Javaサーブレット開発環境について

    学校でサーブレットの勉強をしているのですが、家でもやろうとしてTomcatをパソコンに入れたのですが、サーブレットだけで次のようなエラーが発生します。 例外 javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです 環境変数は CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.0 CLASSPATH .;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\s\WEB-INF\classes JAVA_HOME C:\j2sdk1.4.2_10 PATH C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\s; ちなみにサーブレットのファイルは C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\s\WEB-INF\classes に入れてあります。 どなたかよろしくお願いします。

  • Servletの置き場所(ディレクトリ)

    現在、Windows2000+Apache1.3.20+TomCATにてAPPサーバを構築したのですが、作成したServletやJSPはどこへ置けばいいのでしょうか? Apacheのドキュメントルートは DocumentRoot "D:/Program Files/Apache Group/Apache/htdocs" でTomCATは D:\Program Files\jakarta-tomcat-3.2.3\ の中にconfやbin,webappsなどすべてのファイル/フォルダが入っています。 どうやら、サンプルはwebappsに入っているようです。 Apacheを起動しなくても、8080ポートで接続すればTomCATの画面が現れるので、なぜApacheが必要なのかという疑問と、ServletやJSPの置き場所は?という疑問にぶつかってます。 どなたかよろしくお願いします。

    • ベストアンサー
    • Java
  • サーブレットでコンパイルがうまくいきません。

    質問させて下さい。サーブレットでコンパイルがうまくいきません。 どうか教えて下さい。 エラーはこのとおりです。ディレクトリはC:\Program Files\Tomcat5\webapps\entry\WEB-INF 実行しました。 c:\>set classpath CLASSPATH=C:\Program Files\Tomcat5\common\lib\servlet-api.jar c:\>cd C:\Program Files\Tomcat5\webapps\entry\WEB-INF C:\Program Files\Tomcat5\webapps\entry\WEB-INF>javac src/HelloServlet.java -d classes エラー: src/HelloServlet.java を読み込めません。 エラー 1 個

  • クラスファイルの配置について

    初めまして。 質問したいことがあります。 私の環境は OS:RedHatLinux7.2 JDK:1.3.0_02 Tomcat:ver3.2.4 です。 servletの動作について (1)tomcat/WEB-INF/test/classes/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/helloと入力すると正常に動 作しました。 次に (2)tomcat/WEB-INF/test/classes/sample/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/sample/helloと入力すると Error 500 Internal Servlet Errorというエラーが発生しました。 server.xmlには <Context path="/test"    docBase="webapps/test"    crossContext="false"    debug="0"    reloadable="true" > </Context> を追加しているだけなのですが、Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければならないのでしょうか? (2)のclasses-sample-hello.classというように、classesディレクトリとクラスファイルの間にディレクトリが存在すると駄目なのでしょうか? もし何かわかることがありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • TomcatのJSP Examplesのページを開けません

    これからJSP・サーブレットを勉強しようと思っている初心者です。 Tomcatを起動しhttp://locaohost:8080でページは表示されるのですが、JSP ExamplesとServlet Examplesを開こうとすると、 The requested resource (/jsp-examples/) is not available. というメッセージがでて開く事が出来ません。 WindowsXP J2SE 環境変数は path C:\Program Files\Java\jdk1.5.0\bin;C:\Program Files\MySQL Server4.1\bin CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat5.5 JAVA_HOME C:\Program Files\Java\jdk1.5.0 CLASSPATH C:\Program Files\Apache Software Foundation\Tomcat5.5\common\lib\servlet_api.jar; C:\Program Files\Apache Software Foundation\Tomcat5.5\common\lib\jsp_api.jar; C:\Program Files\Apache Software Foundation\Tomcat5.5\webapps\jsp 10\WEB-INF\classes に設定してあります。 初歩的な質問で申し訳ありませんが、よろしくお願いします。

  • ダウンロードしたjarをimportしたい

    Eclipseでダウンロードしたjarファイルをimportしたいのですが、エラーをはいて困っています。 ソースでいうと 一行目の import com.lowagie.text.*; の時点で「インポートされたcom.lowagieはみつかりません」とでてしまいます。 環境変数の「CLASSPATH」の内容は . ;C:\Program Files\Java\jre6\lib\ext\QTJava.zip ;C:Tomcat 6.0\webapps\userclass\iTextAsian.jar ;C:Tomcat 6.0\webapps\userclass\iText-2.1.7.jar と下の2行を追加しました。 またjarを解凍して「com\lowagie\text」があるのは確認しています。 どこに原因があるのでしょう?お返事おまちしております。

    • ベストアンサー
    • Java
  • Tomcat Servletが動きません

    『Javaへの道:Tomcat』のページを参考に同じようにやってるのですが、 JSPはうまくいくのですがServletがうまくいきません。 (長文になります) 参考ページと私の環境で違う点 Windows XP Home → XP Pro Tomcat 6 → Tomcat 7 JDK6.0 → JDK6.23 ポート8080 → 8081 以下のファイル、フォルダを作りました(参考ページそのままです)。 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\jspdir\HelloJsp.jsp C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\classes\HelloServlet.class C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\web.xml C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost\javaroad.xml --↓↓HelloJsp.jspここから↓↓-- <HTML> <BODY> from JSP source<br> <%= new java.util.Date() %> </BODY> </HTML> --↑↑HelloJsp.jspここまで↑↑-- --↓↓web.xmlここから↓↓-- <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app> --↑↑web.xmlここまで↑↑-- --↓↓javaroad.xmlここから↓↓-- <Context path="/javaroad" reloadable="false"/> --↑↑javaroad.xmlここまで↑↑-- JSPを起動 http://localhost:8081/javaroad/jspdir/HelloJsp.jsp → 正しく表示される Servletを起動 http://localhost:8081/javaroad/Hello → ステータス404 The requested resource (/javaroad/Hello) is not available. <気になる点> 1.Tomcatを起動するためStratボタン押しても1回では起動せず、2~3回で起動する。  1回目のときcommons-daemon.2011-01-15.logにこんなログが出る。  [2011-01-15 23:01:16] [error] Pid file 'C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\tomcat7.pid' exists  [2011-01-15 23:01:16] [error] ServiceStart returned 1 2.servletクラスは正しくコンパイルできているのか 状況を詳しく説明しようとして長々と書いてしましたが Servletを表示するにはどうしたらいいでしょう? 足りない情報があれば追加します。

    • ベストアンサー
    • Java
  • BATファイルでプログラムファイルの書き換え

    ----------------------------------------------------------------- @echo off set TEST="C:\Program Files\TEST\" echo 書き換え処理を開始します。 for /f %%A in ('dir /b /s %TEST%test.txt') do copy NEW\test.txt "%%A" echo 全ての処理は完了しました。 echo 終了するには何かキーを押してください。 pause > nul ----------------------------------------------------------------- Program Files\TEST\内のtest.txtを検索して、それらすべてをNEW\test.txtで上書きするというBATファイルを作りたいのですが、上記のコードではちゃんと動作しません。 Program Files以外のフォルダを指定すると正しく動作してくれるので、おそらくProgram Filesの半角スペースがエラーの原因だと考えました。 このコードもいろいろなサイトとかを見て、自分なりに考えて作ってみました。 が、どうやったらいいのか考えても全然わからなかったので、どなたか教えていただけたら嬉しいです^^ よろしくお願いします!

  • ファイルダウンロードについて

    ファイルをダウンロードするプログラムを組んでいるのですが、 ダウンロード時にポップアップされるダイアログのファイル名に 数字がくっついてきてしまいます。 例) 元ファイル名:test.txt ⇒ test[1].txt これはIEのキャッシュとの事らしいのですが、この数字を出さない方法は あるのでしょうか?

    • ベストアンサー
    • PHP