Il existe plusieurs fichiers, dont des images et des documents. Il doit être automatiquement regroupé dans un package compressé selon les conditions et fourni en téléchargement. Cet article vous présente principalement des exemples d'utilisation de PHP ou ThinkPHP pour empaqueter et télécharger des fichiers par lots. Les amis qui en ont besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.
Solution (classe ZipArchive) :
PHP fournit la classe ZipArchive pour implémenter cette fonction pour nous, démo :
<?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); ?>
Version ThinkPHP
$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);
La différence est que le chemin doit être correct lors de la citation, fin.
Recommandations associées :
Erreur d'emballage de Parcel.js pour choisissez nvm Analyse de l'ensemble du processus
Comment gérer l'affichage vide une fois la vue emballée
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!