2

次のコードで .csv エクスポート ファイルを作成しました。

header('Content-type: text.csv');
header('Content-Disposition: attachment; filename=filename.csv');
.....
$fp = fopen('php://output','w');
foreach ($rowsCsv as $rowCsv) {
    fwrite($fp, $rowCsv);
}
fclose($fp);

問題なく動作しますが、csv ファイルを zip ファイルに圧縮してダウンロードしたいと考えています。どうやって

4

1 に答える 1

4

エクスポートする前に CSV ファイルを読み取るか、ファイルに入れるだけで済みfilename.csvます。

$file_folder = "folder_you_stored/";    // change folder
$file = "filename.csv";                 // your CSV filename from exported done

$zip = new ZipArchive();
$zip_name = "archiver.zip";

    $string_data = 'dumped data of CSV';

$zip->addFile($file_folder.$file); // store a file OR below
$zip->addString("your_filename.csv", $string_data); // file store of string data

# download action
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
header('Content-Length: ' . strlen($string_data));
readfile($zip_name);
unlink($zip_name);

ZIP アーカイブの使用方法に関する PHP.NET リファレンス: http://php.net/manual/en/class.ziparchive .phpž

addFile例のように文字列として追加する代わりに置きます:

$fp = fopen('php://output','w');
foreach ($rowsCsv as $rowCsv) {
    $zip->addFromString('example.csv', $rowCsv);
}
于 2013-03-08T04:02:48.773 に答える