人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

としてます。

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

●質問者: GOROW
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CSV IE MAC PHP Stream
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● tadashi0805
●23ポイント

ヘッダの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を分ける手法もあります。

◎質問者からの返答

ありがとうございます。

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


2 ● okami3
●23ポイント

ダミーです。

http://www.yahoo.co.jp

回答

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

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

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

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

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

◎質問者からの返答

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

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

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

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


3 ● tenshiks
●22ポイント

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

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

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

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

◎質問者からの返答

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

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

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


4 ● yo-kun
●22ポイント

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ