PHPで複数の画像やテキストファイルをzipファイルとしてダウンロードさせる方法
2024/04/16
PHPで画像ファイルやテキストファイルをzip圧縮して、ダウンロードさせたかった。ZipArchiveというクラスで簡単に出来るみたい。以下に対応方法をメモ。
リファレンス
http://php.net/manual/ja/book.zip.php
ソースコード
<?php
set_time_limit(0);
$zip = new ZipArchive();
$zipFileName = 'test.zip';
$zipTmpDir = '/test/zip';
$result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if( $result !== true ){ //エラー処理
echo 'error!';
exit();
}
//zipフォルダにファイルを追加
$zip->addFile('001.jpg');
$zip->addFile('002.jpg');
$zip->addFile('001.txt');
$zip->close();
//出力
header('Content-Type: application/zip; name="' . $zipFileName . '"');
header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
header('Content-Length: '.filesize($zipTmpDir.$zipFileName));
echo file_get_contents($zipTmpDir.$zipFileName);
//zipファイル削除
unlink($zipTmpDir.$zipFileName);
exit();
関連記事
-
-
PHPで一括出力ではなく、ひとつずつ順次に出力する方法
PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...
-
-
PHPのZipArchive::addFileでファイルが追加できない場合の対応方法
過去記事を参考にPHPにて複数のファイルをzipファイル化後、ダウンロードさせた ...
-
-
【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法
だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...
-
-
PHPで簡単にCSVファイルの生成
簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...
-
-
CodeIgniter4でコントローラ実行の前後に指定したイベントを実行する方法
CodeIgniter4で特定の条件の場合は指定したページにリダイレクトさせたい ...