現在、PHPにて社内用のwebアプリケーションを作成しているのですが、そのナカでCSVで書き出す箇所があります。通常は保存や、開くなどのダイアログが出ると思いますが、サファリでは、ブラウザで表示されてしまし、しかも文字化けしてしまいます。どなたか、対処方法を教えて頂けませんでしょうか?


コンテンツヘッダーの部分ですが、
header( "Content-Disposition: inline ; filename=".$filename) ;
header( "Content-Type: text/octet-stream" ) ;
header( "Content-Length: ". filesize($filename));

としてます。

主に社内がMACを使用している為、MAC標準ブラウザである、サファリに対応しなければならないのが、サファリを選択する理由です。IE等、他のブラウザでは問題ありません。

回答の条件
  • 1人10回まで
  • 登録:2006/05/23 09:44:11
  • 終了:2006/05/28 14:19:28

回答(4件)

id:tadashi0805 No.1

tadashi0805回答回数287ベストアンサー獲得回数292006/05/23 10:08:09

ポイント23pt

ヘッダの2行目 Content-Type ですが、

http://chaichan.hp.infoseek.co.jp/qa1000/qa1163.htm

では、text/plainだと成功する例がありました。

また、同URL内にapplication/octet-streamで指定する例もありますし、binary/octet-sreamで指定する例も世の中にはあります。

ただ、確実というわけではありませんので、試行錯誤してみるしかないと思います。

もし、Safariとそれ以外とで、違うContent-Typeでそれぞれダウンロードが可能なら、ブラウザ種別によって出力するContent-Typeを分ける手法もあります。

id:GOROW

ありがとうございます。

とても参考にさせて頂きました。

2006/05/28 14:15:11
id:okami3 No.2

okami3回答回数7ベストアンサー獲得回数02006/05/23 10:04:31

ポイント23pt

ダミーです。

http://www.yahoo.co.jp

回答

ヘッダの部分を、以下のようにしてみてはどうでしょうか?

header("Content-type: application/octet-stream");

header("Content-Disposition: attachment; filename=$filename");

文字化けに関しては、書かれている情報からではよく分かりませんが、CSVに書き出す時の文字コード変換に問題があるのではないでしょうか?

もしくは、ブラウザが表示する時に勝手に文字コードを判断しているのかと思います。

id:GOROW

回答ありがとうございます。ヘッダの部分を

header("Content-type: application/octet-stream");

header("Content-Disposition: attachment; filename=$filename");

としたら、行けました。ありがとうございます。

2006/05/23 13:02:02
id:tenshiks No.3

tenshiks回答回数52ベストアンサー獲得回数12006/05/23 10:17:50

ポイント22pt

http://til.info.apple.co.jp/cgi-bin/WebObjects/TechInfo.woa/wa/s...

私も以前、その問題について調べた事がありますが、結局分かりませんでした。

といいますか、safariの仕様だと思います。

ブラウザに表示されてしまい格好悪いのは妥協して、文字化け状態でも別名保存すれば正常に開けた記憶があります。

id:GOROW

回答、有難うございます。

>ブラウザに表示されてしまい格好悪い

一時は、それも考えたのですが、やはり・・・。

2006/05/28 14:13:43
id:yo-kun No.4

yo-kun回答回数220ベストアンサー獲得回数302006/05/23 10:25:07

ポイント22pt

データを保存や表示などユーザが制御するためには本来Content-Dispositionにはattachmentを指定するのが普通です。

以下はASPの例ですが参考までに。

http://www.atmarkit.co.jp/fdotnet/dotnettips/210aspdbdwnload/asp...

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません