So packen Sie das Herunterladen von Zip-Bildern in PHP
这篇文章主要介绍了关于php打包zip图片下载的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
1.引入类包 zipfile
class zipfile { var $datasec = array (); var $ctrl_dir = array (); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $old_offset = 0; function unix2_dostime($unixtime = 0){ $timearray = ($unixtime == 0) ? getdate () : getdate($unixtime); if ($timearray ['year'] < 1980){ $timearray ['year'] = 1980; $timearray ['mon'] = 1; $timearray ['mday'] = 1; $timearray ['hours'] = 0; $timearray ['minutes'] = 0; $timearray ['seconds'] = 0; } return (($timearray ['year'] - 1980) << 25) | ($timearray ['mon'] << 21) | ($timearray ['mday'] << 16) | ($timearray ['hours'] << 11) | ($timearray ['minutes'] << 5) | ($timearray ['seconds'] >> 1); } function add_file($data, $name, $time = 0){ $name = str_replace('\\', '/', $name); $dtime = dechex($this->unix2_dostime($time)); $hexdtime = '\x' . $dtime [6] . $dtime [7] . '\x' . $dtime [4] . $dtime [5] . '\x' . $dtime [2] . $dtime [3] . '\x' . $dtime [0] . $dtime [1]; eval('$hexdtime = "' . $hexdtime . '";'); $fr = "\x50\x4b\x03\x04"; $fr .= "\x14\x00"; $fr .= "\x00\x00"; $fr .= "\x08\x00"; $fr .= $hexdtime; $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $zdata = substr(substr($zdata, 0, strlen($zdata)- 4), 2); $c_len = strlen($zdata); $fr .= pack('V', $crc); $fr .= pack('V', $c_len); $fr .= pack('V', $unc_len); $fr .= pack('v', strlen($name)); $fr .= pack('v', 0); $fr .= $name; $fr .= $zdata; $fr .= pack('V', $crc); $fr .= pack('V', $c_len); $fr .= pack('V', $unc_len); $this->datasec [] = $fr; $cdrec = "\x50\x4b\x01\x02"; $cdrec .= "\x00\x00"; $cdrec .= "\x14\x00"; $cdrec .= "\x00\x00"; $cdrec .= "\x08\x00"; $cdrec .= $hexdtime; $cdrec .= pack('V', $crc); $cdrec .= pack('V', $c_len); $cdrec .= pack('V', $unc_len); $cdrec .= pack('v', strlen($name)); $cdrec .= pack('v', 0); $cdrec .= pack('v', 0); $cdrec .= pack('v', 0); $cdrec .= pack('v', 0); $cdrec .= pack('V', 32); $cdrec .= pack('V', $this->old_offset); $this->old_offset += strlen($fr); $cdrec .= $name; $this->ctrl_dir[] = $cdrec; } function add_path($path, $l = 0){ $d = @opendir($path); $l = $l > 0 ? $l : strlen($path) + 1; while($v = @readdir($d)){ if($v == '.' || $v == '..'){ continue; } $v = $path . '/' . $v; if(is_dir($v)){ $this->add_path($v, $l); } else { $this->add_file(file_get_contents($v), substr($v, $l)); } } } function file(){ $data = implode('', $this->datasec); $ctrldir = implode('', $this->ctrl_dir); return $data . $ctrldir . $this->eof_ctrl_dir . pack('v', sizeof($this->ctrl_dir)) . pack('v', sizeof($this->ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00"; } function add_files($files){ foreach($files as $file){ if (is_file($file)){ $data = implode("", file($file)); $this->add_file($data, $file); } } } function output($file){ $fp = fopen($file, "w"); fwrite($fp, $this->file ()); fclose($fp); } }
2.实例
$dfile = tempnam('/tmp', 'tmp');//产生一个临时文件,用于缓存下载文件 $zip = new \Org\Util\Zipfile(); //---------------------- $filename = '二维码'.date("Y-m-d H:i",time()).'.zip'; //下载的默认文件名 //以下是需要下载的图片数组信息,将需要下载的图片信息转化为类似即可 $params['ids'] = explode(',',$params['ids']); //获取图片 $image = array( array('image_src' => 'pic1.jpg', 'image_name' => '图片1.jpg'), array('image_src' => 'pic2.jpg', 'image_name' => 'pic/图片2.jpg'), ); foreach($image as $v){ $zip->add_file(file_get_contents($v['image_src']), $v['image_name']); // 添加打包的图片,第一个参数是图片内容,第二个参数是压缩包里面的显示的名称, 可包含路径 // 或是想打包整个目录 用 $zip->add_path($image_path); } //---------------------- $zip->output($dfile); // 下载文件 ob_clean(); header('Pragma: public'); header('Last-Modified:'.gmdate('D, d M Y H:i:s') . 'GMT'); header('Cache-Control:no-store, no-cache, must-revalidate'); header('Cache-Control:pre-check=0, post-check=0, max-age=0'); header('Content-Transfer-Encoding:binary'); header('Content-Encoding:none'); header('Content-type:multipart/form-data'); header('Content-Disposition:attachment; filename="'.$filename.'"'); //设置下载的默认文件名 header('Content-length:'. filesize($dfile)); $fp = fopen($dfile, 'r'); while(connection_status() == 0 && $buf = @fread($fp, 8192)){ echo $buf; } fclose($fp); @unlink($dfile); @flush(); @ob_flush(); exit();
值得一提的是 打包下载时中文文件夹或中文名出现乱码时可用下面方法解决
$name = iconv('utf-8','gb2312',$name);
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Das obige ist der detaillierte Inhalt vonSo packen Sie das Herunterladen von Zip-Bildern in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Das Komprimieren von HTML-Dateien in ZIP kann die Geschwindigkeit beim Laden von Seiten verbessern. Zu den Methoden gehören: Verwendung von Online-Tools (wie FileOptimizer, TinyPNG) Verwendung von Befehlszeilentools (wie z. B. gzip, 7-zip) Verwendung von Node.js-Skripten (mithilfe des zlib-Moduls)

1. Der komprimierte Ordner ist eine ZIP-Datei [root@cgls]#zip-rmydata.zipmydata2. Entpacken Sie mydata.zip in das Verzeichnis mydatabak [root@cgls]#unzipmydata.zip-dmydatabak3.mydata01 und mydata02.txt werden komprimiert mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4. Dekomprimieren Sie direkt die Datei mydata.zip [root@cgls]#unzipmydata.zip5

Der Befehl zip ist ein sehr nützliches Komprimierungstool in Linux-Systemen. Mit dem Befehl „zip“ können Sie Dateien und Verzeichnisse ganz einfach in eine ZIP-Datei komprimieren, Speicherplatz sparen und die Übertragung erleichtern. Die grundlegende Syntax des Zip-Befehls lautet „zip [Optionen] [Name der komprimierten Datei] [zu komprimierende Datei oder Verzeichnis]“.

Das Komprimieren von Dateien ist ein gängiger Vorgang, der Speicherplatz und Netzwerkübertragungszeit sparen kann. Java bietet die Zip-Funktion zur Dateikomprimierung. In diesem Artikel wird anhand einer detaillierten Einführung und einer Beispieldemonstration gezeigt, wie die Zip-Funktion in Java zur Dateikomprimierung verwendet wird. 1. Einführung in die Zip-Funktion Die Zip-Funktion ist eine in Java bereitgestellte Komprimierungs- und Verpackungstoolbibliothek. Mit dieser Funktion können Sie eine Datei oder einen Ordner in eine Datei im Zip-Format komprimieren. ZipOutputStr wird hauptsächlich in der Zip-Funktion verwendet

Die ZIP-Komprimierung von HTML-Dateien kann über das Zipfile-Modul von Python erreicht werden: Erstellen Sie ein ZIP-Dateiobjekt. Fügen Sie HTML-Dateien zur ZIP-Datei hinzu. Schließen Sie das ZIP-Dateiobjekt.

So rufen Sie mit Java den Huawei Cloud OBS Object Storage Service auf, um Bilder herunterzuladen. Einführung: Huawei Cloud OBS (ObjectStorage Service) ist ein sicherer, zuverlässiger, hoch skalierbarer und kostengünstiger Cloud-Speicherdienst. Es bietet flexible Speicherlösungen, mit denen große Mengen unstrukturierter Daten wie Bilder, Videos, Dokumente usw. in verschiedenen Szenarien gespeichert und abgerufen werden können. In diesem Artikel wird erläutert, wie Sie mit der Programmiersprache Java den Huawei Cloud OBS-Objektspeicherdienst aufrufen, um die Bild-Download-Funktion zu implementieren. Schritt 1: Huawei Cloud

7z und zip sind beide verlustfreie Komprimierungen. 7z ist ein gängiges und effizientes Komprimierungsformat mit einer sehr hohen Komprimierungsrate; das ZIP-Dateiformat ist ein Dateiformat zur Datenkomprimierung und Dokumentenspeicherung. 7z hat eine höhere Komprimierungsrate, gefolgt von zip; das Zip-Format ist häufiger und verfügt über eine breite Palette von Technologien, und das Windows-Betriebssystem unterstützt standardmäßig das Zip-Format.

Im Internetzeitalter haben sich die Menschen daran gewöhnt, Bilder von verschiedenen Websites wie Fotogalerien und sozialen Plattformen herunterzuladen. Wenn Sie nur eine kleine Anzahl Bilder herunterladen müssen, ist die manuelle Bedienung nicht umständlich. Wenn jedoch eine große Anzahl von Bildern heruntergeladen werden muss, wird der manuelle Vorgang sehr zeitaufwändig und mühsam. Zu diesem Zeitpunkt muss Automatisierungstechnologie eingesetzt werden, um das automatische Herunterladen von Bildern zu realisieren. In diesem Artikel wird erläutert, wie Sie mithilfe der Python-Crawler-Technologie Bilder automatisch von der Website auf den lokalen Computer herunterladen. Dieser Prozess ist in zwei Schritte unterteilt: Der erste Schritt besteht darin, die Anforderungsbibliothek oder s von Python zu verwenden
