ギリギリ行けるお一人様のライン

お世話になります。

サーバ上のファイルをブラウザからダウンロードさせるため、下記のようなコードを書いています。
// ダウンロードさせる元ファイル
$source = '/home/hogehogel/output.csv';
// 保存時のファイル名(デフォルト)
$filename = 'csv_output.csv';

// HTTPヘッダ送信
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=\"{$filename}\"");
// ファイルを読み込んで出力
readfile($source);

しかし、ダイアログボックスが表示されず、画面上にデータが表示されてしまいます。
いろいろなサイトや書籍等のコードを真似してもダメでした。

サーバはさくらのスタンダードを使っています。

原因として何が考えられるでしょうか。
よろしくお願いいたします。

A 回答 (2件)

>header("Content-type: application/csv");



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

でどうでしょう?
それとphpファイルの保存時にBOMが乗らないように指定してください
    • good
    • 0
この回答へのお礼

BOMが原因でした。解決しました。
ありがとうございました。

お礼日時:2013/08/27 12:11

ヘッダー出力を以下のようにしたらどうでしょう。


header("Content-Disposition: attachment; filename=" . $filename);
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");

この回答への補足

ありがとうございます。
いただいたコードを試してみましたが、やはり画面に表示されてしまいます。

補足日時:2013/08/27 12:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報