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

首頁 > 編程 > PHP > 正文

php生成zip壓縮文件的方法詳解

2020-03-22 19:41:27
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:
require_once "./include/zip.php";
$zip = new PHPZip();
//$zip - createZip("要壓縮的文件夾目錄地址", "壓縮后的文件名.zip"); //只生成不自動下載
$zip - downloadZip("要壓縮的文件夾目錄地址", "壓縮后的文件名.zip"); //自動下載

實例:可以參考下面的偽代碼來看一個具體的使用場景:
代碼
復制代碼 代碼如下:
require_once "./include/zip.php";
if (!$download) {
exit();
}
set_time_limit(60);
$tmpManager = new TmpManager(); //假設我們有一個類來完成后面的操作
$tempfolder = array();
$tempfile = array();
//假設我們是通過在頁面上選擇checkbox來下載已選的文件夾或文件,并一同打包
for($i = 0;$i $checkboxnum;$i++) {
$html' target='_blank'>value = ${"select".$i};
if ($value != '') {
$this_type = substr($value, 0, 1);
$this_id = substr($value, 1);
//將文件夾和文件的情況分開處理
if ($this_type == 'd') {
$tempfolder[] = $this_id;
}
elseif ($this_type == 'f') {
$tempfile[] = $this_id;
}
}
}
@mkdir($tempdir);
$curtempdir = "$tempdir/".$userid; //不同用戶在不同的臨時文件夾下操作
if (file_exists($curtempdir)) {
$tmpManager- DeleteDir($curtempdir); //刪除舊的文件夾
}
if (sizeof($tempfolder) 0 || sizeof($tempfile) 0) {
mkdir($curtempdir, 0777); //如果有要打包的文件貨文件夾,重新創建文件夾
}
if (sizeof($tempfile) 0) {
$tmpManager- CopyFile($tempfile,$curtempdir); //將要下載的文件copy到創建的文件夾
}
if (sizeof($tempfolder) 0) {
$tmpManager- CopyFolder($tempfolder,$curtempdir); //將要下載的文件夾copy到創建的文件夾
}
$zip = new PHPZip();
$zip - downloadZip($curtempdir, "file_".date('Ymd').".zip"); //打包并下載

zip.php
復制代碼 代碼如下:
?php
/*
File name: /include/zip.php
Author: Horace 2009/04/15
*/
class PHPZip{
var $dirInfo = array("0","0");
var $rootDir = '';
var $datasec = array();
var $ctrl_dir = array();
var $eof_ctrl_dir = "/x50/x4b/x05/x06/x00/x00/x00/x00";
var $old_offset = 0;
function downloadZip(){
createZip($dir, $zipfilename, true);
}
function createZip($dir, $zipfilename, $autoDownload = false){
if (@function_exists('gzcompress')){
@set_time_limit("0");
if (is_array($dir)){
$fd = fopen ($dir, "r");
$fileValue = fread ($fd, filesize ($filename));
fclose ($fd);
if (is_array($dir)) $filename = basename($dir);
$this - addFile($fileValue, "$filename");
}else{
$this- dirTree($dir,$dir);
}
$zipfilenametemp = time().$zipfilename;
$out = $this - filezip();
$fp = fopen($zipfilenametemp, "w");
fwrite($fp, $out, strlen($out));
fclose($fp);
$filesize = filesize($zipfilenametemp);
if ($filesize 104857600) {
if($autoDownload){
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=".$zipfilename);
}
echo $this - filezip();
}else{
echo "create zip error!";
}
unlink($zipfilenametemp);
}
}
//get dir tree..
function dirTree($directory,$rootDir){
global $_SERVER,$dirInfo,$rootDir;
$fileDir=$rootDir;
$myDir=dir($directory);
while($file=$myDir- read()){
if(is_dir("$directory/$file") and $file!="." and $file!=".."){
$dirInfo[0]++;
$rootDir ="$fileDir$file/";
$this - addFile('', "$rootDir");
//go on n's folders
$this- dirTree("$directory/$file",$rootDir);
}else{
if($file!="." and $file!=".."){
$dirInfo[1]++;
//$fd = fopen ("$directory/$file", "r");
$fileValue = file_get_contents("$directory/$file");
//fclose ($fd);
$this - addFile($fileValue, "$fileDir$file");
}
}
}
$myDir- close();
}
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);
}
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 = "/x50/x4b/x03/x04";
$fr .= "/x14/x00"; // ver needed to extract
$fr .= "/x00/x00"; // gen purpose bit flag
$fr .= "/x08/x00"; // 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 = "/x50/x4b/x01/x02";
$cdrec .= "/x00/x00"; // version made by
$cdrec .= "/x14/x00"; // version needed to extract
$cdrec .= "/x00/x00"; // gen purpose bit flag
$cdrec .= "/x08/x00"; // 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;
}
function filezip(){
$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
"/x00/x00"; // .zip file comment length
}
}
?

PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品一区二区三区四区| 午夜免费在线观看精品视频| 亚洲精品久久久久久久久久久久久| 成人性生交大片免费观看嘿嘿视频| 国产91色在线免费| 欧美国产日韩一区二区| 欧美一级大片在线免费观看| 久久精品成人动漫| 国产精品久久精品| 国产欧美日韩中文| 久久综合伊人77777蜜臀| 永久免费看mv网站入口亚洲| 色综合老司机第九色激情| 亚洲精品按摩视频| 国产视频久久久久| 日韩美女在线播放| 久久久久久久久久久成人| 欧美久久精品午夜青青大伊人| 黑人极品videos精品欧美裸| 亚洲国产成人在线视频| 91最新国产视频| 疯狂做受xxxx欧美肥白少妇| 一区二区三区动漫| 日韩一二三在线视频播| 91国产视频在线播放| www.日韩视频| 亚洲最新av在线网站| 精品福利樱桃av导航| 国产香蕉一区二区三区在线视频| 91成人在线播放| 日韩精品免费在线视频| 日韩中文字幕精品视频| 日韩中文字幕国产精品| 91麻豆桃色免费看| 久久久久久中文字幕| 精品久久久国产| 91国内在线视频| 久久亚洲精品小早川怜子66| 亚洲美女视频网站| 久久精品一本久久99精品| 欧美性猛交xxxx乱大交极品| 久久精品美女视频网站| 国产亚洲精品美女| 国产成人精品在线视频| 992tv在线成人免费观看| 亚洲精品少妇网址| 欧美一区二区三区免费观看| 中文字幕久精品免费视频| 91在线视频成人| 亚洲欧美日韩一区二区在线| 在线观看精品自拍私拍| 国产欧美在线播放| 亚洲视频视频在线| 日韩在线资源网| 91中文字幕一区| 国产婷婷成人久久av免费高清| 欧美高清无遮挡| 97久久精品人人澡人人爽缅北| 日韩精品视频中文在线观看| 成人有码在线视频| 日韩经典中文字幕| 久久6免费高清热精品| 日韩欧美中文免费| 亚洲自拍偷拍色片视频| 欧美激情视频给我| 国产精品视频导航| 97精品视频在线| 91精品视频在线看| 国产精品私拍pans大尺度在线| 欧美大片免费观看在线观看网站推荐| 亚洲二区在线播放视频| 国产精品人成电影| 91亚洲精品久久久久久久久久久久| 亚洲一区二区三区在线视频| 精品国产户外野外| 日韩美女写真福利在线观看| 日韩专区中文字幕| 美日韩精品视频免费看| 亚洲第一国产精品| 懂色av中文一区二区三区天美| 国产精品白嫩初高中害羞小美女| 欧美电影在线播放| 欧美日韩在线免费| 久久躁狠狠躁夜夜爽| 视频在线观看99| 国产精品高潮在线| 日韩美女福利视频| 亚洲男人天堂网| 久久久伊人日本| 欧美成人免费小视频| 亚洲国产精品人人爽夜夜爽| 色中色综合影院手机版在线观看| 国产91ⅴ在线精品免费观看| 欧美孕妇毛茸茸xxxx| 欧美刺激性大交免费视频| 国产免费一区二区三区在线能观看| 欧美一级大胆视频| 欧美一区三区三区高中清蜜桃| 久久天天躁狠狠躁夜夜躁| 一道本无吗dⅴd在线播放一区| 正在播放欧美视频| 成人网在线观看| 国产98色在线| 欧美精品激情在线观看| 少妇av一区二区三区| 国产一区在线播放| 亚洲性夜色噜噜噜7777| 亚洲二区在线播放视频| 日韩亚洲精品电影| 欧日韩不卡在线视频| 日韩一区二区三区xxxx| www.久久草.com| 日韩欧美中文字幕在线播放| 国产在线观看精品| 激情亚洲一区二区三区四区| 日韩av最新在线观看| www亚洲精品| 亚洲视频综合网| 国产精品久久久久aaaa九色| 成人中心免费视频| 欧美日本高清视频| 日韩精品久久久久久久玫瑰园| 国产99在线|中文| 国产乱人伦真实精品视频| 亚洲一区久久久| 亚洲成人av片在线观看| 亚洲免费视频一区二区| 亚洲精品国偷自产在线99热| 欧美中文字幕视频在线观看| 美女少妇精品视频| 91九色国产社区在线观看| xxxxx成人.com| 日韩av在线网| 欧美成人免费va影院高清| 欧美在线一级va免费观看| 亚洲人成电影网站色xx| 在线观看亚洲视频| 亚洲国产精品va在线观看黑人| 欧美极品第一页| 日韩欧美在线字幕| 亚洲www在线观看| 欧美孕妇与黑人孕交| 九九热精品视频国产| 久久久久久久久爱| 秋霞午夜一区二区| 国产成人一区二区三区小说| 黑人巨大精品欧美一区二区三区| 日韩在线播放av| 欧美乱大交xxxxx另类电影| 日韩av在线网址| 精品国偷自产在线视频99| 欧美成人免费大片| 日本欧美爱爱爱| 亚洲综合在线中文字幕| 日韩av在线网| 黄网站色欧美视频| 中文字幕亚洲综合久久筱田步美| 爱福利视频一区| 91免费视频网站| 亚洲第一色中文字幕| 久久色精品视频| 中文字幕国产精品| www.日韩系列| 韩国欧美亚洲国产|