Heim  >  Artikel  >  Backend-Entwicklung  >  ThinkPHP implementiert das Stapelpacken und Herunterladen von Dateien

ThinkPHP implementiert das Stapelpacken und Herunterladen von Dateien

小云云
小云云Original
2018-05-15 14:38:454171Durchsuche

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(&#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);
 
?>

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:

Detaillierte Erläuterung der Beispiele für React- und Webpack-Konstruktion und Verpackungsoptimierung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn