複数ファイルを圧縮してダウンロード

phpMyAdmin のライブラリを使用して、複数ファイルを圧縮できるようにします。
「zip.lib.php」を使用します。

<?php

header( "Content-Type: application/octet-stream" );
header( "Content-disposition: attachment; filename=comp.zip" );

require_once('zip.lib.php');

// クラス作成
$zipfile = new zipfile();

// ファイルリストを読み込む
$line = file('tmp/lists.data');
$file_name = explode(',', $line[0]);

$i = 0;
while($file_name[$i] != ""){
    
    // ダウンロード元ファイルのPath
    $filename = $file_name[$i];
    
    // 保存時のファイル名
    ${'fName'.$i} = $filename;
    
    // ファイルをバイナリで読んで、変数にセット
    $handle = fopen($filename, "rb");
    $contents = fread($handle, filesize($filename));
    fclose($handle);

    // 追加
    $zipfile->addFile($contents, ${'fName'.$i});
    
    $i ++;
}

// zip をバイナリで変数にセット
$zip_buffer = $zipfile->file();

print $zip_buffer;

?>

コメントを残す