[PHP]Slim Frameworkでcsv/tsvファイルダウンロードを行う

カテゴリ: SlimFramework

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')
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。