Laravel csvファイルをzip形式でダウンロードする。
1 2 3 一 二 三
というcsvファイルを作成して、 なおかつそれをzip形式でダウンロードさせたい場合、以下のように書ける。
use File; use ZipArchive; ... $header = []; // csvヘッダー部分 array_push($header, "1"); array_push($header, "2"); array_push($header, "3"); $body = []; // csvボディ部分 array_push($body, "一"); array_push($body, "二"); array_push($body, "三"); $zip = new ZipArchive; $zipFileName = "xxx.zip"; $csvFileName = "xxx.csv"; $csvFilePath = public_path($csvFileName); // 作成したいcsvファイルのフルパスを用意する $csvFile = fopen($csvFilePath, 'w'); // 用意したフルパスにcsvファイルを作成 fputcsv($csvFile, $header); // ヘッダー部分をcsvファイルに書き込む fputcsv($csvFile, $body); // ボディ部分をcsvファイルに書き込む if($zip->open($csvFilePath, ¥ZipArchive::CREATE | ¥ZipArchive::OVERWRITE) === TRUE){ // csvファイルを置いたところにzipファイルも置く $zip->addFile($csvFilePath, $csvFileName); // zipファイルに、csvファイルを追加する } $zip->close(); return response()->download(public_path($zipFileName)); // zipファイルをダウンロードする