亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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格式并下載到本地的方法示例的相關信息資訊供網民參考!
  • 推薦文章
    好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 99久久精品国产高清一区二区| 国产91精品一区二区| 尤物视频网站在线| 国产91精品一区| 国产一级强片在线观看| 亚洲爆爽| 国产精品自拍亚洲| 久久精品免视看国产成人2021| 国产网站免费| 久久成人亚洲| 亚洲精品影院| 台湾毛片| 国产伦久视频免费观看 视频 | 午夜激情视频在线播放| 成人免费观看男女羞羞视频| 色综合久久久久综合体桃花网| 黄视频网站在线观看| 日韩在线观看视频网站| 成人a大片在线观看| 久久国产精品自由自在| 国产一区二区精品久久91| 韩国三级一区| 成人高清免费| 你懂的在线观看视频| 欧美激情一区二区三区在线| 美女免费黄网站| 黄色福利片| 日日夜夜婷婷| 日本伦理网站| 国产视频在线免费观看| 一级女人毛片人一女人| 免费的黄视频| a级精品九九九大片免费看| 午夜久久网| 久久国产影视免费精品| 亚飞与亚基在线观看| 日日夜人人澡人人澡人人看免| 九九免费高清在线观看视频| 一本伊大人香蕉高清在线观看| 欧美1卡一卡二卡三新区| 精品视频一区二区三区| 国产原创视频在线| 91麻豆tv| 国产亚洲男人的天堂在线观看| 韩国三级视频网站| 毛片高清| 久久精品大片| 黄视频网站免费| 免费国产在线视频| 国产一区二区精品| 国产成人精品综合在线| 亚洲天堂一区二区三区四区| 一a一级片| 国产一区二区精品在线观看| 欧美1区| 欧美爱爱动态| 麻豆午夜视频| 国产伦理精品| 国产成人精品综合久久久| 韩国三级香港三级日本三级| 精品国产香蕉伊思人在线又爽又黄| 亚欧成人乱码一区二区| 亚洲天堂免费| 欧美a免费| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品国产香蕉伊思人在线又爽又黄| 国产伦精品一区三区视频| 日韩一级黄色片| 亚洲天堂免费观看| 亚久久伊人精品青青草原2020| a级毛片免费观看网站| 天天色色网| 国产网站免费视频| 91麻豆国产福利精品| 国产精品123| 久久精品欧美一区二区| 香蕉视频三级| 色综合久久天天综合绕观看| 亚久久伊人精品青青草原2020| 欧美电影免费| 国产91精品系列在线观看| a级毛片免费全部播放| 日日夜人人澡人人澡人人看免| 午夜激情视频在线观看| 精品久久久久久综合网| 欧美大片毛片aaa免费看| 亚洲精品影院久久久久久| 日韩中文字幕一区二区不卡| 国产亚洲男人的天堂在线观看| 精品在线观看国产| 韩国妈妈的朋友在线播放| 国产韩国精品一区二区三区| 亚洲女人国产香蕉久久精品 | 国产麻豆精品视频| 日韩专区在线播放| 午夜在线亚洲| 亚欧成人毛片一区二区三区四区| 成人高清护士在线播放| 国产精品自拍亚洲| 亚洲不卡一区二区三区在线 | 国产高清视频免费观看| 麻豆网站在线免费观看| 麻豆系列国产剧在线观看| 在线观看成人网 | 精品国产一区二区三区国产馆| 日本免费看视频| 成人免费一级纶理片| 日日夜人人澡人人澡人人看免| 香蕉视频久久| 中文字幕97| 精品视频免费观看| 九九免费精品视频| 色综合久久天天综合观看| 美女免费精品高清毛片在线视| 久草免费在线视频| 香蕉视频一级| 日韩中文字幕在线观看视频| 欧美a级大片| 久久精品店| 精品国产香蕉伊思人在线又爽又黄| 色综合久久手机在线| 高清一级片| 久久精品免视看国产明星| 尤物视频网站在线观看| 精品国产一区二区三区久| 国产美女在线观看| 久久久成人影院| 午夜欧美成人久久久久久| 国产综合成人观看在线| 91麻豆精品国产片在线观看| 91麻豆精品国产高清在线| 午夜激情视频在线观看| 99色视频在线观看| 国产美女在线观看| 午夜久久网| 午夜激情视频在线播放| 美女免费黄网站| 999精品在线| 国产激情视频在线观看| 精品国产一区二区三区久久久蜜臀| 国产综合成人观看在线| 欧美激情一区二区三区视频| 精品久久久久久中文| 麻豆系列国产剧在线观看| 国产成a人片在线观看视频| 日韩在线观看免费| 可以免费在线看黄的网站| 精品国产一区二区三区久久久蜜臀| 国产一区免费观看| 91麻豆精品国产高清在线| 四虎影视库| 欧美1卡一卡二卡三新区| 九九久久99综合一区二区| 精品国产一区二区三区久| 日韩专区一区| 欧美爱色| 日韩欧美一二三区| 精品视频一区二区三区免费| 午夜在线影院| 国产一区二区精品在线观看| a级黄色毛片免费播放视频 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产视频一区二区在线播放| 中文字幕Aⅴ资源网| 欧美爱爱动态| 精品视频在线观看一区二区 | 四虎论坛| 免费国产在线观看| 久久国产精品自由自在| 成人影院久久久久久影院| 精品久久久久久中文字幕2017| 麻豆系列 在线视频| 精品国产香蕉伊思人在线又爽又黄| 免费一级片网站| 深夜做爰性大片中文| 999久久久免费精品国产牛牛| 欧美激情一区二区三区在线播放| 日韩在线观看视频网站| 午夜在线亚洲| 日本免费乱理伦片在线观看2018| 天天做日日爱夜夜爽| 97视频免费在线| 午夜在线观看视频免费 成人| 黄视频网站免费观看| 国产国语在线播放视频| 九九久久国产精品| 91麻豆国产福利精品| 999久久66久6只有精品| 国产综合91天堂亚洲国产| 日本免费区| 成人av在线播放| 亚洲 欧美 成人日韩| 美女免费毛片| 国产精品免费精品自在线观看| 午夜家庭影院| 毛片成人永久免费视频| 欧美一级视| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 91麻豆精品国产自产在线观看一区|