婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP實現將多個文件壓縮成zip格式并下載到本地的方法示例

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

熱門標簽:遼寧ai電銷機器人價格 長沙做地圖標注公司 四川保險智能外呼系統供應商 上海做外呼線路的通信公司 地圖標注專員怎么樣 福建銀行智能外呼系統價格 房產中介用的是什么外呼系統 電話機器人銷售主要負責什么 寧波外呼營銷系統

本文實例講述了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 class", uses zLib
#
#
class 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操作zip文件及壓縮技巧總結》、《php文件操作總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php利用ZipArchive類操作文件的實例
  • php ZipArchive實現多文件打包下載實例
  • PHP生成zip壓縮包的常用方法示例
  • php解壓縮zip和rar壓縮包文件的方法
  • 實例介紹PHP中zip_open()函數用法
  • PHP zip壓縮包操作類完整實例
  • PHP實現打包zip并下載功能
  • PHP使用zlib擴展實現GZIP壓縮輸出的方法詳解
  • linux服務器安裝PHP擴展zip,zlib方法
  • 基于PHP安裝zip拓展,以及libzip安裝的問題
  • php 解壓zip壓縮包內容到指定目錄的實例
  • php操作zip在不解壓縮包的情況下顯示壓縮包中的圖片
  • 如何使用php生成zip壓縮包

標簽:常德 澳門 宜春 深圳 宿遷 工商登記 延安 佛山

巨人網絡通訊聲明:本文標題《PHP實現將多個文件壓縮成zip格式并下載到本地的方法示例》,本文關鍵詞  PHP,實,現將,多個,文件,壓,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現將多個文件壓縮成zip格式并下載到本地的方法示例》相關的同類信息!
  • 本頁收集關于PHP實現將多個文件壓縮成zip格式并下載到本地的方法示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产在线精品一区二区不卡了 | 久久99精品久久久久婷婷| 亚洲香肠在线观看| 图片区小说区国产精品视频| 麻豆国产精品一区二区三区| 国产成人自拍高清视频在线免费播放| 成人av在线一区二区三区| 91蜜桃在线观看| 精品少妇一区二区三区在线视频| 国产日韩欧美一区二区三区乱码| 亚洲人成伊人成综合网小说| 日本亚洲视频在线| 丰满岳乱妇一区二区三区 | 自拍偷拍亚洲综合| 久久福利视频一区二区| 色哟哟一区二区在线观看| 欧美区视频在线观看| 久久久综合网站| 五月激情六月综合| 成人精品gif动图一区| 91精品欧美久久久久久动漫| 中文字幕一区二区三区精华液 | 首页亚洲欧美制服丝腿| 成人免费看片app下载| 欧美一区二区久久| 亚洲综合一二区| 99久久综合精品| 久久综合色8888| 美国十次综合导航| 欧美日韩国产美| 亚洲黄一区二区三区| 99视频一区二区| 国产精品国产三级国产三级人妇| 美女www一区二区| 精品视频在线免费观看| 亚洲美女屁股眼交3| 成人h动漫精品| 久久久91精品国产一区二区三区| 日韩av中文字幕一区二区| av一本久道久久综合久久鬼色| 精品国产免费人成在线观看| 午夜精品一区在线观看| 91在线观看地址| 中文字幕在线观看一区| 国产91精品一区二区麻豆亚洲| 日韩女优毛片在线| 久久精品国产一区二区| 4438x成人网最大色成网站| 亚洲精品ww久久久久久p站| av色综合久久天堂av综合| 国产精品电影一区二区三区| 床上的激情91.| 中文字幕va一区二区三区| 国产精品正在播放| 久久精品在线观看| 成人一区在线观看| 国产精品福利一区| av电影在线观看完整版一区二区| 国产精品的网站| 91麻豆高清视频| 亚洲综合小说图片| 欧美日韩国产欧美日美国产精品| 性感美女久久精品| 日韩一级片在线播放| 玖玖九九国产精品| 国产欧美日韩另类一区| 99精品视频中文字幕| 一区二区视频免费在线观看| 欧美无人高清视频在线观看| 日韩高清不卡一区| 久久久99免费| 91网站最新地址| 亚洲影视在线观看| 精品日韩成人av| 波多野结衣精品在线| 亚洲精品乱码久久久久久黑人 | 日韩欧美国产不卡| 国产一区二区三区av电影| 国产精品伦一区二区三级视频| 91论坛在线播放| 亚洲第一电影网| 久久久91精品国产一区二区三区| 91丨九色丨黑人外教| 五月综合激情网| 精品99久久久久久| 成a人片亚洲日本久久| 婷婷久久综合九色综合伊人色| 精品电影一区二区三区| 99久精品国产| 美女mm1313爽爽久久久蜜臀| 亚洲欧洲日韩在线| 精品视频全国免费看| 国产成人在线观看免费网站| 亚洲综合成人在线视频| 久久亚洲一级片| 欧美日韩国产另类一区| 国产乱码一区二区三区| 一区二区三区四区视频精品免费| 欧美一区二区高清| 成人激情校园春色| 国产中文字幕精品| 三级一区在线视频先锋| 亚洲女同女同女同女同女同69| 欧美一二三区在线观看| 色久综合一二码| 国产成人午夜视频| 久久精品国产免费看久久精品| 国产精品污网站| 日韩一区二区三区免费看| 99久久99久久精品国产片果冻| 久久国产尿小便嘘嘘尿| 亚洲电影视频在线| 国产精品久久三区| 精品少妇一区二区三区日产乱码| 欧美视频在线观看一区二区| 成人激情小说乱人伦| 免费在线一区观看| 亚洲制服欧美中文字幕中文字幕| 国产亚洲精品7777| 在线综合+亚洲+欧美中文字幕| 99r精品视频| 成人免费视频视频在线观看免费 | 裸体在线国模精品偷拍| 国产精品国产三级国产aⅴ无密码| 91精品久久久久久久99蜜桃 | 中文字幕av不卡| 欧美午夜精品理论片a级按摩| 国产成人高清在线| 亚洲午夜精品17c| 综合久久久久久| 自拍偷在线精品自拍偷无码专区| 国产偷国产偷亚洲高清人白洁| 精品国产三级电影在线观看| 欧美一区二区三区四区五区| 欧美老肥妇做.爰bbww| 欧美图片一区二区三区| 欧美在线一区二区三区| 在线观看亚洲成人| 欧美三级视频在线播放| 欧洲视频一区二区| av高清不卡在线| 成人黄色在线视频| 国产99久久久国产精品免费看| 狠狠网亚洲精品| 天堂va蜜桃一区二区三区漫画版| 亚洲国产视频a| 国产精品无遮挡| 国产欧美精品一区二区色综合 | 久久久精品国产99久久精品芒果| 欧美国产一区在线| 欧美成人三级在线| 国产成人日日夜夜| 高清国产一区二区三区| 99久久精品久久久久久清纯| 国产精品素人一区二区| 日韩一区欧美一区| 亚洲一区二区在线免费看| 国产欧美日韩在线看| 中文字幕在线观看不卡| 欧美三级午夜理伦三级中视频| 欧美日韩国产在线播放网站| 午夜伊人狠狠久久| 午夜欧美大尺度福利影院在线看| 亚洲色图清纯唯美| 这里只有精品免费| eeuss鲁片一区二区三区在线看| 日本不卡不码高清免费观看| 成人一区二区在线观看| 国产麻豆成人精品| 婷婷中文字幕综合| 亚洲第一二三四区| 亚洲国产裸拍裸体视频在线观看乱了 | 免费黄网站欧美| 顶级嫩模精品视频在线看| 精品影院一区二区久久久| 日韩av在线播放中文字幕| 日韩在线一区二区| 日日夜夜精品视频免费| 日韩av午夜在线观看| 日本伊人色综合网| 免费高清成人在线| 国产一区二区三区免费看| 国产揄拍国内精品对白| 久久久国产一区二区三区四区小说 | 欧美日韩国产综合视频在线观看| 日本高清不卡视频| 日本韩国一区二区三区视频| 99天天综合性| 在线视频你懂得一区| 欧美日韩一区二区三区视频| 欧美精品在线观看播放| 欧美大尺度电影在线| 久久精品欧美日韩精品 | 亚州成人在线电影| 亚洲成av人片www| 亚洲成人在线观看视频| 亚洲图片有声小说| 日本亚洲视频在线| 粉嫩av一区二区三区粉嫩| 91视视频在线直接观看在线看网页在线看|