1. ホーム
  2. php

[解決済み] php で複数のファイルを zip ファイルとしてダウンロードする。

2022-08-19 14:34:42

質問

phpで複数のファイルをzipファイルとしてダウンロードするにはどうしたらよいでしょうか?

どのように解決するのですか?

あなたは ZipArchive クラスを使用して ZIP ファイルを作成し、それをクライアントにストリームします。のようなものです。

$files = array('readme.txt', 'test.html', 'image.gif');
$zipname = 'file.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
  $zip->addFile($file);
}
$zip->close();

とストリーミングするために

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);

2行目は、ブラウザにダウンロードボックスを表示させ、filename.zipという名前を要求しています。3 行目は任意ですが、特定の(主に古い)ブラウザでは、コンテンツのサイズが指定されないと問題が発生する場合があります。