勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで複数の画像やテキストファイルをzipファイルとしてダウンロードさせる方法

   2024/04/16  PHP

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にて西暦から干支(十二支)を計算し表示する方法

先日MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表 ...

PHPでPOST送信する際に多次元配列も送る方法
PHPでPOST送信する際に多次元配列も送る方法

PHPでPOST送信する際に多次元配列も送りたかった。ただ普通に送ろうとするとO ...

PHPでjpg / png画像をWebP画像に変換し保存する方法
PHPでjpg / png画像をWebP画像に変換し保存する方法

PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだと ...

PHPとPAY.JPを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法
PHPとPAY.JPを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法

先日PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する ...

MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法
MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法

MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...