広告

[PHP]ファイルを生成しないでCSVダウンロードさせる

PHPで配列をCSVダウンロードさせるのにCSVの一時的にファイルを作成してファイルをダウンロードさせる例が多いけどファイルを作成しないでダウンロードさせることもできるのね。

<?php
$data = array(
  array('あああ', '奈良県', 'aaa@example.com'),
  array('いいい', '大阪府', 'bbb@example.com'),
  array('ううう', '東京都', 'ccc@example.com'),
);

// 文字コード変換(UTF-8 ⇒ SJIS-win)
mb_convert_variables('SJIS-win', 'UTF-8', $data);

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=data.csv');

$stream = fopen('php://output', 'w');
foreach ($data as $row) {
  fputcsv($stream, $row);
}
exit;