Es gibt mehrere Dateien, darunter Bilder und Dokumente. Es muss entsprechend den Bedingungen automatisch in ein komprimiertes Paket gepackt und zum Download bereitgestellt werden. In diesem Artikel werden hauptsächlich Beispiele für die Verwendung von PHP oder ThinkPHP zum Paketieren und Herunterladen von Dateien vorgestellt. Freunde, die es benötigen, können darauf verweisen.
Lösung (ZipArchive-Klasse):
PHP stellt die ZipArchive-Klasse zur Verfügung, um diese Funktion für uns zu implementieren, Demo:
<?php $files = array('image.jpeg','text.txt','music.wav'); $zipname = 'enter_any_name_for_the_zipped_file.zip'; $zip = new ZipArchive; $zip->open($zipname, ZipArchive::CREATE); foreach ($files as $file) { $zip->addFile($file); } $zip->close(); ///Then download the zipped file. header('Content-Type: application/zip'); header('Content-disposition: attachment; filename='.$zipname); header('Content-Length: ' . filesize($zipname)); readfile($zipname); ?>
ThinkPHP-Version
$zip = new \ZipArchive; //压缩文件名 $filename = 'download.zip'; //新建zip压缩包 $zip->open($filename,\ZipArchive::OVERWRITE); //把图片一张一张加进去压缩 foreach ($images as $key => $value) { $zip->addFile($value); } //打包zip $zip->close(); //可以直接重定向下载 header('Location:'.$filename); //或者输出下载 header("Cache-Control: public"); header("Content-Description: File Transfer"); header('Content-disposition: attachment; filename='.basename($filename)); //文件名 header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: binary"); header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小 readfile($filename);
Der Unterschied besteht darin, dass der Pfad beim Zitieren und Ende korrekt sein muss.
Verwandte Empfehlungen:
Parcel.js-Verpackungsfehler zu Wählen Sie NVM Analyse des gesamten Prozesses
Wie gehe ich mit der leeren Anzeige um, nachdem Vue gepackt wurde
Das obige ist der detaillierte Inhalt vonThinkPHP implementiert das Stapelpacken und Herunterladen von Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!