莞城建设小学网站,怎么做非法网站,2015做导航网站有哪些,做网站怎么做多少钱上次遇到一个需要打包下载批量图片的问题#xff0c;找了一下发现这个好方法#xff0c;记录一下。首先新建一个zipfile打包类#xff1a;class zipfile {var $datasec array ();var $ctrl_dir array ();var $eof_ctrl_dir \x50\x4b\x05\x06\x00\x00\x00\x00…上次遇到一个需要打包下载批量图片的问题找了一下发现这个好方法记录一下。首先新建一个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);}}//下面是实例操作过程$dfile tempnam(/tmp, tmp);//产生一个临时文件用于缓存下载文件$zip new zipfile();//----------------------$filename image.zip; //下载的默认文件名//以下是需要下载的图片数组信息将需要下载的图片信息转化为类似即可$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-check0, post-check0, max-age0);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();?以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。本条技术文章来源于互联网如果无意侵犯您的权益请点击此处反馈版权投诉本文系统来源php中文网