• ベストアンサー

content-dispositionによるファイル名の指定について

CGIで動的にCSVファイルを作成し、ダウンロードできるようなものを作成しています。 httpヘッダのcontent-dispositionでファイル名を指定しているのですが、 NetScape7.01ではファイル名の先後に勝手に.CGIがついてしまいます。 何か対処方はないのでしょうか?

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

  • ベストアンサー
  • t140
  • ベストアンサー率39% (59/150)
回答No.2

HTTP/1.1 200 OK などのヘッダまでCGIから出力しているということですか? だとすればNPHスクリプトですね? ならばConnectionヘッダはKeep-Aliveではなくcloseで いいと思います。 Content-Disposition: attachment; filename="a.csv" Content-Type: application/download; name="a.csv" この2ヘッダを出力しても回避できない現象だとすると ブラウザ特有の挙動のようですね? わたしの知る最終手段として、ブラウザをダマす方法が あります。以下のような感じで拡張パスを使う方法ですが うまくダマせるかどうかはやってみないとわかりません。 <form method="post" action="download.cgi/a.csv"> これとは別に、素直にa.csvというファイルを書き出して メタタグで呼び出すようなカラクリも使えるかとは思いますが・・・。

redheads
質問者

お礼

ありがとうございました。 <form action="XXX.cgi/a.csv?param=XXX&・・・"> のようにしたら成功しました。 参考までに各ブラウザでの確認結果を。 IE6、NS4.7、NS7.1、NS7.01 ⇒Content-Dispositionで指定のファイル名でDL成功 NS6⇒ダウンロードのダイアログ(開くか保存するか選択するところ)のタイトルはa.csv、ファイル保存先指定のデフォルトファイル名はContent-Dispositionのファイル名になりました。 あと下の補足のヘッダはについてはプロキシサーバもどき?ソフトのヘッダ監視機能から取得したものなのでHTTP/1.1 200 OKは出していません。 Keep-Aliveはアパッチが勝手につけてくれたものだと思います。 紛らわしくてすみません。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • t140
  • ベストアンサー率39% (59/150)
回答No.1

回答ではないのですが一つアドバイスしておきますと、 具体的にどういうヘッダを現状で出力されているかを 書いたほうがこういう場合は回答が得られ易いと思います。 ポイントとしては、ブラウザ特有の問題なのかヘッダの 出し方に起因するものかだと思います。 併せて、よく使われるヘッダを以下に書いておきます。 (download部分はoctet-streamと書かれる場合も) (ファイル名a.csvで512バイトの例) Content-Type: application/download; name="a.csv" Content-Disposition: attachment; filename="a.csv" Content-Length: 512

redheads
質問者

補足

ご指摘通り、現状のものを書き忘れていましたので 補足します。 以下は現状ののHTTPヘッダです。 HTTP/1.1 200 OK Date: Wed, 13 Apr 2005 03:09:44 GMT Server: Apache/1.3.29 (Unix) PHP/4.2.4-dev mod_ssl/2.8.16 OpenSSL/0.9.7d Content-Disposition: attachment; filename="a.csv" Content-Length: 14 Keep-Alive: timeout=15, max=100 Proxy-Connection: Keep-Alive Connection: Keep-Alive Content-Type: application/download; name="a.csv"

すると、全ての回答が全文表示されます。

関連するQ&A