福岡 web・ホームページ制作 Eight(エイト)

【PHP】コピペでできる!複数ファイルをZIP形式でダウンロードさせるためのコード公開!

php_eyecatch
Category:PHP

「複数ファイルをZIP形式でダウンロードさせたい!」場合、PHPが最新であれば、新たにライブラリとか入れなくても実装できます。

PHPのZIPアーカイブが使えるか確認

ZIPアーカイブ

まずはサーバ側で、PHPのZIPアーカイブが利用できるかphpinfo()などを見て確認しましょう。
このようにenabledになっていれば使えるので大丈夫です。

ZIPの項目が無いという方はインストールしなければいけません。
下記のページを参考にしてZIPアーカイブをインストールしてください。

ZIP Archive のインストールPHPプログラムメモ|プログラムメモ

複数の画像ファイルをZIPでダウンロードするPHPコード

今回は独自関数にファイルのパスの配列を渡しています。

// Zipクラスロード
$zip = new ZipArchive($pathArry);
// Zipファイル名
$zipFileName = "file_" . date("Ymds") .'.zip';
// Zipファイル一時保存ディレクトリ
$zipTmpDir = '../dl/tmp';
 
// Zipファイルオープン
$result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if ($result !== true) {
    // 失敗した時の処理
}
 
// 処理制限時間を外す
set_time_limit(0);
 
foreach ($pathArry as $filepath) {
    $filename = basename($filepath);
    // 取得ファイルをZipに追加していく
    $zip->addFromString($filename,file_get_contents($filepath));
}
                 
$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);
 
// 一時ファイルを削除しておく
unlink($zipTmpDir.$zipFileName);
exit();

上記をコピペして変更が必要なのところは各自で記述しなければと思います。

参考は下記サイト様です!さんくすヽ(´ー`)ノ

【PHP】Zipファイルを作成しダウンロードさせる方法

Related Article

Comments

Page Top