PHPのフレームワークであるSlim Frameworkで、ブラウザからcsv/tsvなどのファイルをダウンロードする方法です。
$app->get('/tsv_test', function (Request $request, Response $response, array $args) {
// TSVデータを作成する
$tsvData = "name1\tvalue1\n";
$tsvData .= "name2\tvalue2\n";
$tsvData .= "name3\tvalue3\n";
$tsvData .= "name4\tvalue4\n";
// 応答データを作成
$response = $response->withHeader("Content-Type", "application/octet-stream")
->withHeader('Content-Disposition', 'attachment;filename="test.tsv')
->withHeader('Content-Length', strlen($tsvData))
->write($tsvData);
return $response;
});
ファイルダウンロード処理では意図的にキャッシュをOFFにしたい場合が多いです。キャッシュさせたくない場合は、上記の$response作成処理に下記の3行を追加しておくと良いです。
$response->withHeader('Expires', '0')
->withHeader('Cache-Control', 'must-revalidate')
->withHeader('Pragma', 'public')
こちらもおススメ