Maison  >  Article  >  développement back-end  >  ThinkPHP implémente le packaging par lots et le téléchargement de fichiers

ThinkPHP implémente le packaging par lots et le téléchargement de fichiers

小云云
小云云original
2018-05-15 14:38:454215parcourir

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(&#39;image.jpeg&#39;,&#39;text.txt&#39;,&#39;music.wav&#39;);
$zipname = &#39;enter_any_name_for_the_zipped_file.zip&#39;;
$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 :

Explication détaillée des exemples de construction et d'optimisation de l'emballage de React et Webpack

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn