strutsでファイルダウンロード(WinでOK,linuxでNG)

strutsでWindowsのexeファイルのダウンロードを実装しましたが、Windows上のtomcatにdeploy...

noname#49664 さんからの 回答

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

  • 2006/06/22 15:02
  • 回答No.2
  • ベストアンサー
>hoge.exeという名前のファイルはダウンロードできるのですが、それが実はテキストで、メモ帳で開くと、ダウンロード画面のhtmlが表示されます。

これが妙ですね。要するに、hoge.exeではなく、誤って○○.htmlのファイルが送られている、ということですよね。
 WindowsとLinuxの違いというと、ファイルのパスが違うというのが思い浮かぶんですが、ひょっとしてdownloadメソッドを呼び出す際に渡される引数の値そのものが意図したものと違っている可能性はないでしょうか。
 例えば、渡されているfilenameはどのようなものでしょうか。RealPath(絶対パス)になってますか? ひょっとして相対パスのままだったりファイル名のみだったりしませんか?
 まずは引数がすべて正常に渡されているかどうかを確認してみてはいかがでしょう。
お礼コメント
ibayac

お礼率 88% (32/36)

Kyon2_PaPaさん、ありがとうございました。
まさに仰っていた通りの問題でした。
こちらは/usr/local/tomcat/work/download/a.exe をサーバーに用意していたのですが、サーブレットでは/work/download/a.exe をファイル名として与えていました。
てっきりtomcatからの相対パスを与えていると思いこんでいましたので、何度見ても正しいと思っていたのですが、最初に/がついているので絶対パスとして見てしまっていたようです。
tomcat/logs/catalina.outを追ってみると、[java.io.FileNotFoundException: /work/download/a.exe (No such file or directory)]の文字が・・・。

お騒がせしました。解決いたしました。

※しかし、ファイルが存在しないとhtmlを吐くとは驚きです。tomcatの仕様なのでしょうか。そこに意識を奪われて混乱してしまいました。
投稿日時:2006/06/22 15:41
この回答にこう思った!同じようなことあった!感想や体験を書こう!
この回答にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
  • PostgreSQL その他(データベース)

    これから、PHP4&PostgreSQLでサイト開発を行いたいと 考えています。 一応、RED HAT Linuxのサーバーは設置してありますが、 作業の効率(使い慣れているだけ・・)を考えると、windows上で開発して、サーバーに移植したいと考えています。 WINDOWSマシンにはApacheをインストールしてあります。 PHP4については、Win32バージョンがあることは確認しましたが、PostgreSQLについては、Win32バージョンは存在しているのでしょうか? 書籍にはあるらしき事が記載されていましたが、どこからダウンロードできるかが分かりません。 もし、ご存知の方がいらっしゃれば、そのサイトを教えて頂けませんでしょうか? 宜しくお願い致します。...

  • サーバリプレース(Win⇒Linux)について その他(プログラミング・開発)

    はじめまして。黒雪姫と申します。 有識者・経験者の方、知識を分けていただけると幸いです。 システム開発チームに所属し、Windows/Solarisサーバのメンテナンスや ソフト・アプリ開発を行っている者です。 この度、担当しているシステム(Windows2003ServerR2)をLinuxサーバに リプレースすることになりました。 しかし、現行のシステムをLinuxに対応させるにあたって どこから勉強・調査すればよいものか悩んでおります。 Linuxについては、コマンドでファイルやソースを見たり、 日々の稼働状態を監視するためのツール作成など 簡単な保守レベルの経験しかありません。初心者です・・・。 そこで、WindowsからLinuxへのシステム移行において、 言語レベルでの互換性や徹底的な違い、特に気をつけるべきこと等を 教えていただけないでしょうか。 尚、リプレースにあたって、ソースは全てLinux用に修正、または 作り直すことになっています。 システムの構成は次のとおりです。  ◆ 処理の構成 ◆----------------------------------------------------    ・ソースは夜間処理が95%。    ・メイン業務は、上位サーバ(Solaris)と中継サーバ(WindowsServer2003R2)と     のデータ連携。日中、RDB接続で行う。  --------------------------------------------------------------------  ◆ ソース ◆---------------------------------------------------------    ・バッチ(MS-DOS)が大半。    ・C、VBS6を元とするEXE    ・COBOL  --------------------------------------------------------------------  ◆ クライアントPCについて ◆-------------------------------------------    お客様先PC(Windows)に専用アプリ(EXE)をインストールして、    DBへの直アクセスでデータの読み取り・書き込みを行う。    アプリの構成は、VBとJava。    (リプレースを機に、アプリ機能をWEB化しようと考えています。)  -------------------------------------------------------------------- ※上位サーバは先にLinuxにリプレースされます。   また、低コストで行うため、他のLinuxサーバに他システムと同居するかたちで   リプレースします。   マルチDBとなる場合の注意点も教えていただけると助かります。 HPや市販の書籍、他の質問をいくつか読んでみましたが、 システムリプレース関連やWindowsとLinuxの違いに関する情報が乏しく、 セミナーに行くような費用も見込めないため、ここに頼らせていただきました。 未熟者で申し訳ないですが、皆様の知識をお借りできないでしょうか。 役立つ書籍や情報等、何でも参考にさせていただきたいです。 よろしくお願いいたします。...

  • RedHat Linux のインストールについて その他(OS)

    Linuxははじめてです。 RedHat Linuxの9をインストールしています。 サーバーではなく、ワークステーションです。 アップグレードではなくて、新規にインストールします。 マシンはWin98の少し古いマシンです。 HDDを増設してあり、Cドライブ(マスター)にWindows、Dドライブ(スレーブ)をLinuxにするつもりです。 Dドライブは、FDISKで領域を全て削除しました。 LANに接続しています。回線はフレッツADSL1.5Mです。(実効速度は1.1MBくらい) LANボードはPCI接続の3com製のもので、Linuxに対応しています。 FTPからダウンロードするつもりで、専門書をみながらインストール作業をしています。 ですが、何度かやり直しても、「パッケージのインストール」という画面で動かなくなります。 画面には棒グラフが出ていて、12%とか15%で止まってしまい、3時間くらいほったらかしにしても進んでいません。 ルーターのデータポートが消えたままなので、データのやり取りもないと思われます。 ダウンロード先は ftp.redhat.com です。 redhat社のHPにかかれてあるミラーサイトも試してみましたが、接続不能や見つからないといったエラーがでます。 質問ですが、 Linuxのインストール(ダウンロード)にはどれくらい時間がかかるものなのでしょうか? 本には、具体的な時間がかかれていません。「機種によっては時間がかかる」と書かれています。 そして、ミラーサイトでもちゃんとダウンロードできるのですか?...

  • LinuxからWin10 Windows 10

    Windows7インストール機(ノートパソコン)をDVDをダウンロードして、Windows10にアップグレードしました。その後、Linuxとのダブルブートにしようとしたのですが、上手くいかずに、Linuxマシーンとして使用してました。Windowsマシーンに戻すかダブルブータブルにできるかと思い立ち、Win10のDVDからブートしましたが、認証されずに、Linuxが立ち上がってしまいます。 これって、Windows7をリカバリした後にしなければ、ならないのでしょうか? 簡単に、インストールできる方法とかございますでしょうか?...

  • CSVファイルのダウンロード PHP

    <環境> PHP4.3.2 Windows2000 PostgreSQL RedHat Linux <求めていること> DBのデータをCSVファイルに書き出し、 ダウンロードボタン押下で ダイアログがアップしファイル保存ディレクトリ選択、保存。 <現在のソース> サーバーにtest.csvファイル作成後、 現在HTMLでダウンロードボタン押下でdownload.phpを呼び出し <input type=button value="ダウンロード" onClick="location.href='download.php'"> ---------------- download.php ------------------- <?php // 1.ディレクトリ指定 //$filename="/test/test.csv"; // 2.ディレクトリ指定なし $filename = "test.csv"; header("Content-disposition: attachment; filename=$filename"); header("Content-type: application/octet-stream"); ?> ---------------- download.php ------------------- 現在、 1番のディレクトリ指定だと downloadというファイルがダウンロードされるダイアログがアップし ダウンロードされます。 2番のディレクトリ指定なしだと もちろん空のtest.csvファイルがダウンロードされます。 実現したいのは/test/test.csvのファイルをダウンロードすることです。 色々なサイトで探してみて試しているのですが 初心者なもので、行き詰まってしまいました。 申し訳ありませんが ご教授よろしくお願いします。...

ページ先頭へ