婷婷综合国产,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
    欧美精品色一区二区三区| 日本久久电影网| 青青草97国产精品免费观看| 亚洲国产综合在线| 亚洲五码中文字幕| 日韩福利视频导航| 久久精品99国产国产精| 国产毛片精品一区| 成人性视频免费网站| 99在线热播精品免费| 在线观看视频91| 91精品啪在线观看国产60岁| 精品久久久久久久久久久久久久久| 日韩视频123| 欧美激情自拍偷拍| 亚洲丝袜精品丝袜在线| 亚洲高清免费观看| 老色鬼精品视频在线观看播放| 久久精品国产999大香线蕉| 国产成人精品在线看| 欧洲日韩一区二区三区| 日韩女同互慰一区二区| 国产精品日韩成人| 天堂久久一区二区三区| 国产激情视频一区二区在线观看| 91丝袜美腿高跟国产极品老师 | 91麻豆精品在线观看| 欧美午夜免费电影| 久久久久久久综合| 亚洲一区在线看| 国产老肥熟一区二区三区| 91精品福利视频| 国产日韩精品一区二区浪潮av| 一区二区三区在线看| 国精品**一区二区三区在线蜜桃| 91视频你懂的| 精品av久久707| 天堂久久久久va久久久久| 成人晚上爱看视频| 欧美va亚洲va在线观看蝴蝶网| 亚洲六月丁香色婷婷综合久久| 激情另类小说区图片区视频区| 91福利在线播放| 中文字幕欧美国产| 国产揄拍国内精品对白| 777午夜精品免费视频| 亚洲欧洲一区二区在线播放| 美女www一区二区| 欧美亚洲动漫精品| 亚洲欧美日韩国产手机在线| 国产精品中文字幕欧美| 日韩美女视频一区二区在线观看| 亚洲美女淫视频| 99免费精品视频| 国产精品天干天干在线综合| 国产自产v一区二区三区c| 欧美日韩国产影片| 亚洲一卡二卡三卡四卡| 成人av动漫在线| 国产精品视频yy9299一区| 国产精品伊人色| 欧美精品一区二区高清在线观看| 日韩精品五月天| 欧美一区二区三区日韩| 五月婷婷另类国产| 欧美福利视频一区| 免费一级片91| 久久亚洲捆绑美女| 国产一区二区三区久久久| 26uuu成人网一区二区三区| 蜜桃av一区二区三区| 精品国产一区a| 国产一区二区三区久久悠悠色av | 91麻豆高清视频| 1024成人网色www| 成人高清视频在线| 亚洲美女免费视频| 欧美日韩一区二区在线观看 | 色婷婷av一区| 亚洲乱码国产乱码精品精可以看 | 亚洲免费av高清| 欧美在线免费观看亚洲| 亚洲国产精品一区二区www | 国产另类ts人妖一区二区| 久久精子c满五个校花| 成人午夜电影久久影院| 亚洲三级在线观看| 在线成人免费视频| 色婷婷av一区二区三区软件| 国产精品每日更新| 欧美揉bbbbb揉bbbbb| 日av在线不卡| 国产欧美综合在线观看第十页| 99vv1com这只有精品| 日韩**一区毛片| 国产视频在线观看一区二区三区| 99久久er热在这里只有精品15| 亚洲国产色一区| 国产欧美日韩视频一区二区 | 奇米777欧美一区二区| 久久精品一区蜜桃臀影院| 97精品国产97久久久久久久久久久久 | 久久99国内精品| 国产精品久久久久久久久果冻传媒| 色偷偷88欧美精品久久久| 日本伊人午夜精品| 国产精品无人区| 欧美一区二区三区婷婷月色 | 另类的小说在线视频另类成人小视频在线| 久久综合久久综合亚洲| 欧美主播一区二区三区| 国产九九视频一区二区三区| 亚洲成人综合视频| 亚洲欧洲色图综合| 久久综合视频网| 3751色影院一区二区三区| 成人免费高清视频在线观看| 日韩不卡一区二区| 亚洲精品一二三区| 日本一区二区免费在线观看视频| 在线成人av影院| 精品视频999| 99精品视频在线免费观看| 国精产品一区一区三区mba桃花 | 国内精品伊人久久久久av一坑| 亚洲老妇xxxxxx| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 免费观看在线综合色| 一区二区三区在线播放| 中国av一区二区三区| 久久久午夜精品理论片中文字幕| 91麻豆精品国产91久久久久久| 91国偷自产一区二区三区成为亚洲经典| 狠狠色狠狠色综合日日91app| 午夜视频在线观看一区二区| 亚洲综合一区二区三区| 亚洲精品成人精品456| 亚洲免费观看高清完整版在线观看| 中文字幕av资源一区| 欧美国产成人精品| 国产精品视频你懂的| 国产网红主播福利一区二区| 久久影院午夜论| 欧美精品一区二区三区视频| 欧美一级二级三级蜜桃| 欧美成人a∨高清免费观看| 欧美一区二区成人6969| 日韩精品一区二区三区在线| 91精品国产综合久久久久久 | 成人午夜视频福利| 国产成人福利片| 菠萝蜜视频在线观看一区| 成人97人人超碰人人99| av日韩在线网站| 色综合久久六月婷婷中文字幕| 色婷婷久久久综合中文字幕| 欧美日韩亚洲不卡| 欧美一二三区精品| 国产日本欧洲亚洲| 国产精品不卡一区二区三区| 亚洲欧美日韩一区二区| 亚洲chinese男男1069| 美女尤物国产一区| 国产精品99久久久| 色综合一区二区三区| 欧美乱妇一区二区三区不卡视频 | 国产一区二区三区高清播放| 国产成人av电影在线播放| 99r精品视频| 正在播放亚洲一区| 久久久久88色偷偷免费| 亚洲人一二三区| 蜜臀av性久久久久蜜臀av麻豆| 国产乱子伦一区二区三区国色天香| 国产91精品露脸国语对白| 91福利小视频| 久久一区二区三区四区| 亚洲乱码国产乱码精品精的特点 | 成人99免费视频| 337p亚洲精品色噜噜噜| 欧美国产精品一区二区| 午夜视频一区在线观看| 成人精品国产福利| 日韩欧美国产一区二区在线播放| 国产精品久久久久久亚洲伦| 视频一区二区三区中文字幕| 成人性生交大合| 欧美电视剧免费全集观看| 亚洲免费av观看| 国产精品一区二区在线观看网站| 欧洲一区在线观看| 国产精品网曝门| 国产曰批免费观看久久久| 欧美日韩精品一区二区三区四区| 国产精品丝袜黑色高跟| 秋霞电影网一区二区| 一本大道av一区二区在线播放| 久久综合九色综合欧美就去吻| 亚洲国产成人av| 91在线国产福利|