亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP實現將多個文件壓縮成zip格式并下載到本地的方法

2020-03-22 17:50:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP實現將多個文件壓縮成zip格式并下載到本地的方法,涉及php針對文件與目錄的讀寫、判斷與zip壓縮相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP實現將多個文件壓縮成zip格式并下載到本地的方法。分享給大家供大家參考,具體如下:

廢話不多說,直接上代碼

//這里需要注意該目錄是否存在,并且有創建的權限$zipname = path/test.zip //這是要打包的文件地址數組$files = array( mypath/test1.txt , mypath/test2.pdf $zip = new ZipArchive();$res = $zip- open($zipname, ZipArchive::CREATE);if ($res === TRUE) { foreach ($files as $file) { //這里直接用原文件的名字進行打包,也可以直接命名,需要注意如果文件名字一樣會導致后面文件覆蓋前面的文件,所以建議重新命名 $new_filename = substr($file, strrpos($file, / ) + 1); $zip- addFile($file, $new_filename);//關閉文件$zip- close();

//這里是下載zip文件header( Content-Type: application/zip header( Content-Transfer-Encoding: Binary header( Content-Length: . filesize($zipname));header( Content-Disposition: attachment; filename=/ . basename($zipname) . / readfile($zipname);exit;

附:這里再為大家提供一個zip壓縮類:

 ?php# PHPZip v1.2 by Sext (sext@neud.net) 2002-11-18# (Changed: 2003-03-01)# Makes zip archive# Based on Zip file creation html' target='_blank'>class , uses zLibclass PHPZip function Zip($dir, $zipfilename) if (@function_exists( gzcompress )) $curdir = getcwd(); if (is_array($dir))  $filelist = $dir; else  $filelist = $this - GetFileList($dir); if ((!empty($dir)) (!is_array($dir)) (file_exists($dir))) chdir($dir); else chdir($curdir); if (count($filelist) 0) foreach($filelist as $filename) if (is_file($filename)) $fd = fopen ($filename, r  $content = fread ($fd, filesize ($filename)); fclose ($fd); if (is_array($dir)) $filename = basename($filename); $this - addFile($content, $filename); $out = $this - file(); chdir($curdir); $fp = fopen($zipfilename, w  fwrite($fp, $out, strlen($out)); fclose($fp); return 1; else return 0; function GetFileList($dir) if (file_exists($dir)) $args = func_get_args(); $pref = $args[1]; $dh = opendir($dir); while($files = readdir($dh)) if (($files!= . ) ($files!= .. ))  if (is_dir($dir.$files))  $curdir = getcwd(); chdir($dir.$files); $file = array_merge($file, $this - GetFileList( , $pref$files/ )); chdir($curdir); else $file[]=$pref.$files; closedir($dh); return $file; var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = x50x4bx05x06x00x00x00x00  var $old_offset = 0; * Converts an Unix timestamp to a four byte DOS date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * @param integer the current Unix timestamp * @return integer the current date in a four byte DOS format * @access private function unix2DosTime($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; } // end if return (($timearray[ year ] - 1980) 25) | ($timearray[ mon ] 21) | ($timearray[ mday ] 16) | ($timearray[ hours ] 11) | ($timearray[ minutes ] 5) | ($timearray[ seconds ] 1); } // end of the unix2DosTime() method * Adds file to archive * @param string file contents * @param string name of the file in the archive (may contains the path) * @param integer the current timestamp * @access public function addFile($data, $name, $time = 0) $name = str_replace( , / , $name); $dtime = dechex($this- unix2DosTime($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 = x50x4bx03x04  $fr .= x14x00 // ver needed to extract $fr .= x00x00 // gen purpose bit flag $fr .= x08x00 // compression method $fr .= $hexdtime; // last mod time and date // local file header segment $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $c_len = strlen($zdata); $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug $fr .= pack( V , $crc); // crc32 $fr .= pack( V , $c_len); // compressed filesize $fr .= pack( V , $unc_len); // uncompressed filesize $fr .= pack( v , strlen($name)); // length of filename $fr .= pack( v , 0); // extra field length $fr .= $name; // file data segment $fr .= $zdata; // data descriptor segment (optional but necessary if archive is not // served as file) $fr .= pack( V , $crc); // crc32 $fr .= pack( V , $c_len); // compressed filesize $fr .= pack( V , $unc_len); // uncompressed filesize // add this entry to array $this - datasec[] = $fr; $new_offset = strlen(implode( , $this- datasec)); // now add to central directory record $cdrec = x50x4bx01x02  $cdrec .= x00x00 // version made by $cdrec .= x14x00 // version needed to extract $cdrec .= x00x00 // gen purpose bit flag $cdrec .= x08x00 // compression method $cdrec .= $hexdtime; // last mod time date $cdrec .= pack( V , $crc); // crc32 $cdrec .= pack( V , $c_len); // compressed filesize $cdrec .= pack( V , $unc_len); // uncompressed filesize $cdrec .= pack( v , strlen($name) ); // length of filename $cdrec .= pack( v , 0 ); // extra field length $cdrec .= pack( v , 0 ); // file comment length $cdrec .= pack( v , 0 ); // disk number start $cdrec .= pack( v , 0 ); // internal file attributes $cdrec .= pack( V , 32 ); // external file attributes - archive bit set $cdrec .= pack( V , $this - old_offset ); // relative offset of local header $this - old_offset = $new_offset; $cdrec .= $name; // optional extra field, file comment goes here // save to central directory $this - ctrl_dir[] = $cdrec; } // end of the addFile() method * Dumps out file * @return string the zipped file * @access public function file() $data = implode( , $this - datasec); $ctrldir = implode( , $this - ctrl_dir); return $data . $ctrldir . $this - eof_ctrl_dir . pack( v , sizeof($this - ctrl_dir)) . // total # of entries on this disk  pack( v , sizeof($this - ctrl_dir)) . // total # of entries overall pack( V , strlen($ctrldir)) . // size of central dir pack( V , strlen($data)) . // offset to start of central dir x00x00 // .zip file comment length } // end of the file() method} // end of the PHPZip class? 

用法:

$zipfiles =array( /root/pooy/test1.txt , /root/pooy/test2.txt $z = new PHPZip();//$randomstr = random(8);$zipfile = TEMP. /photocome_ .$groupid. .zip $z- Zip($zipfiles, $zipfile);

您可能感興趣的文章:

PHP遞歸遍歷文件夾去除注釋并壓縮php源代碼的方法

PHP工廠模式簡單實現方法示例

PHP自定義函數實現assign()數組分配到模板及extract()變量分配到模板功能示例

以上就是PHP實現將多個文件壓縮成zip格式并下載到本地的方法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲日韩欧美视频| 日韩三级影视基地| 亚洲人成免费电影| 欧美激情喷水视频| 欧美成人免费va影院高清| 亚洲精品av在线| 久久久久久久亚洲精品| 亚洲国产精品字幕| 亚洲嫩模很污视频| 亚洲第一在线视频| 日本一本a高清免费不卡| 国产精品福利片| 国产欧亚日韩视频| 欧美视频专区一二在线观看| 亚洲男女自偷自拍图片另类| 欧美亚洲国产另类| 日本高清久久天堂| 777777777亚洲妇女| 亚洲精品网址在线观看| 在线视频一区二区| 亚洲天堂av在线免费观看| 欧美日韩在线免费观看| 欧美视频免费在线观看| 992tv成人免费视频| 美女久久久久久久久久久| 日韩在线观看免费高清| 一区二区三欧美| 欧美一级高清免费播放| 久久久99免费视频| 国产在线视频一区| 亚洲最大的网站| 亚洲va国产va天堂va久久| 国产精品mp4| 日本精品一区二区三区在线| 亚洲国产精品久久| 亚洲电影免费观看高清完整版| 欧美日韩中文在线| 国产mv免费观看入口亚洲| 成人免费视频97| 成人免费视频在线观看超级碰| 久久久综合av| 久久天天躁狠狠躁夜夜av| 日韩在线免费观看视频| 国产香蕉精品视频一区二区三区| 午夜精品国产精品大乳美女| 日韩电视剧免费观看网站| 69av成年福利视频| 欧洲美女免费图片一区| 97精品一区二区三区| 亚洲视频视频在线| 国产成人a亚洲精品| 国产精品福利在线观看| 欧美尺度大的性做爰视频| 久久人人爽人人爽人人片亚洲| 神马久久桃色视频| 亚洲国产高清福利视频| 精品国产一区二区三区四区在线观看| 国产亚洲欧美另类中文| 九九热视频这里只有精品| 91av在线播放| 98午夜经典影视| www.日韩av.com| 国产成人久久久精品一区| 午夜精品美女自拍福到在线| 欧美成人第一页| 日韩欧美中文第一页| 海角国产乱辈乱精品视频| 国产精品久久视频| 在线日韩中文字幕| 亚洲视频电影图片偷拍一区| 欧美性极品xxxx做受| 中文字幕精品在线视频| 国产成人久久久精品一区| 欧美精品一区二区免费| 久久久国产一区| 日韩av影院在线观看| 狠狠色狠色综合曰曰| 欧美日韩中文字幕在线| 成人国产精品一区二区| 国产欧美 在线欧美| 久久精品国产精品亚洲| 日韩欧美综合在线视频| 亚洲欧美日韩综合| 欧美日韩在线免费观看| 国产成人精品一区二区| 国产精品久久久久久网站| 亚洲高清av在线| 久久精品亚洲一区| 色噜噜久久综合伊人一本| 中文字幕亚洲在线| 91人人爽人人爽人人精88v| 亚洲在线观看视频网站| 奇米成人av国产一区二区三区| 久久夜色精品国产欧美乱| 欧美日韩国产一中文字不卡| 91在线免费视频| 国产日韩视频在线观看| 亚洲精品日韩激情在线电影| 国产精品美女久久久久久免费| 韩国美女主播一区| 国产精品老女人视频| 精品美女永久免费视频| 欧美乱妇高清无乱码| 亚洲精品久久久久久下一站| 午夜精品一区二区三区在线视| 国产精品成熟老女人| 日韩在线观看免费全集电视剧网站| 91精品国产自产在线老师啪| 国产精品高潮呻吟久久av无限| 91av福利视频| 成人午夜两性视频| 国产精品久久久久久中文字| 成人亚洲综合色就1024| 国产成人午夜视频网址| 91禁外国网站| 欧洲亚洲免费在线| 美日韩精品免费观看视频| 色综合色综合久久综合频道88| 久久精品国产69国产精品亚洲| 亚洲午夜未满十八勿入免费观看全集| 日韩精品免费看| 亚洲开心激情网| 51ⅴ精品国产91久久久久久| 日韩在线观看免费全| 奇米一区二区三区四区久久| 中文欧美日本在线资源| 欧美高清理论片| 亚洲一区二区三区四区视频| 欧美伦理91i| 欧美专区在线视频| 欧美精品videosex牲欧美| 日本精品久久中文字幕佐佐木| 成人性生交大片免费观看嘿嘿视频| 精品久久久久久中文字幕| 日韩最新在线视频| 亚洲第一区中文字幕| 欧美国产精品va在线观看| 亚洲视频axxx| 精品久久久999| 欧美日韩国产va另类| 亚洲国产欧美一区二区三区久久| 中文字幕精品视频| 日韩电影中文字幕在线| 日韩美女中文字幕| 欧美日韩国产成人| 国产精品xxx视频| 亚洲乱码国产乱码精品精| 欧美黑人狂野猛交老妇| 九九久久久久99精品| 97国产真实伦对白精彩视频8| 亚洲综合成人婷婷小说| 亚洲永久在线观看| 欧美www视频在线观看| 亚洲国产精品美女| 久久久在线视频| 在线亚洲国产精品网| 久久久久久久久久久久久久久久久久av| 欧美日韩国产成人在线| 国产精品成人一区| 69视频在线免费观看| 欧美日韩国产精品一区二区三区四区| 国产日韩在线视频| 欧美午夜宅男影院在线观看| 久久久精品视频成人|