91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用ThinkPHP怎么將本地文件打包成zip文件

發布時間:2020-12-24 15:37:16 來源:億速云 閱讀:425 作者:Leah 欄目:開發技術

本篇文章為大家展示了利用ThinkPHP怎么將本地文件打包成zip文件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

首先,將FileToZip.class文件放到ThinkPHP/Extend/Library/ORG/Util/文件夾中,FileToZip.class.php為zip下載類,其詳細代碼如下:

<?php
/**
 * zip下載類文件
 * 遍歷目錄,打包成zip格式
 */
class traverseDir{
 public $currentdir;//當前目錄
 public $filename;//文件名
 public $fileinfo;//用于保存當前目錄下的所有文件名和目錄名以及文件大小
 public $savepath;
 public function __construct($curpath,$savepath){
  $this->currentdir=$curpath;//返回當前目錄
  $this->savepath=$savepath;//返回當前目錄
 }  
 //遍歷目錄
 public function scandir($filepath){
  if (is_dir($filepath)){
    $arr=scandir($filepath);
    foreach ($arr as $k=>$v){
     $this->fileinfo[$v][]=$this->getfilesize($v);
    }
   }else {
    echo "<script>alert('當前目錄不是有效目錄');</script>";
   }
 }
 /**
  * 返回文件的大小
  *
  * @param string $filename 文件名
  * @return 文件大小(KB)
  */
 public function getfilesize($fname){
  return filesize($fname)/1024;
 }
 /**
  * 壓縮文件(zip格式)
  */
 public function tozip($items){ 
  $zip=new ZipArchive();
  $zipname=date('YmdHis',time());
  if (!file_exists($zipname)){
   $zip->open($savepath.$zipname.'.zip',ZipArchive::OVERWRITE);//創建一個空的zip文件
   for ($i=0;$i<count($items);$i++){
    $zip->addFile($this->currentdir.'/'.$items[$i],$items[$i]);
   }
   $zip->close();
   $dw=new download($zipname.'.zip',$savepath); //下載文件
   $dw->getfiles();
   unlink($savepath.$zipname.'.zip'); //下載完成后要進行刪除 
  }
 }
}
/**
 * 下載文件
 *
 */
class download{
 protected $_filename;
 protected $_filepath;
 protected $_filesize;//文件大小
 protected $savepath;//文件大小
 public function __construct($filename,$savepath){
  $this->_filename=$filename;
  $this->_filepath=$savepath.$filename;
 }
 //獲取文件名
 public function getfilename(){
  return $this->_filename;
 }
 //獲取文件路徑(包含文件名)
 public function getfilepath(){
  return $this->_filepath;
 }
 //獲取文件大小
 public function getfilesize(){
  return $this->_filesize=number_format(filesize($this->_filepath)/(1024*1024),2);//去小數點后兩位
 }
 //下載文件的功能
 public function getfiles(){
  //檢查文件是否存在
  if (file_exists($this->_filepath)){
   //打開文件
   $file = fopen($this->_filepath,"r");
   //返回的文件類型
   Header("Content-type: application/octet-stream");
   //按照字節大小返回
   Header("Accept-Ranges: bytes");
   //返回文件的大小
   Header("Accept-Length: ".filesize($this->_filepath));
   //這里對客戶端的彈出對話框,對應的文件名
   Header("Content-Disposition: attachment; filename=".$this->_filename);
   //修改之前,一次性將數據傳輸給客戶端
   echo fread($file, filesize($this->_filepath));
   //修改之后,一次只傳輸1024個字節的數據給客戶端
   //向客戶端回送數據
   $buffer=1024;//
   //判斷文件是否讀完
   while (!feof($file)) {
    //將文件讀入內存
    $file_data=fread($file,$buffer);
    //每次向客戶端回送1024個字節的數據
    echo $file_data;
   }
   fclose($file);
  }else {
   echo "<script>alert('對不起,您要下載的文件不存在');</script>";
  }
 }
}

ThinkPHP中加載zip下載類FileToZip.class.php并實現本地文件打包下載的功能代碼如下所示:

import('ORG.Util.FileToZip');//引入zip下載類文件FileToZip
// 打包下載
$handler = opendir($cur_file); //$cur_file 文件所在目錄
$download_file = array();
$i = 0;
while( ($filename = readdir($handler)) !== false ) {
 if($filename != '.' && $filename != '..') {
 $download_file[$i++] = $filename;
 }
}
closedir($handler);
$scandir=new traverseDir($cur_file,$save_path); //$save_path zip包文件目錄
$scandir->tozip($download_file);

上述內容就是利用ThinkPHP怎么將本地文件打包成zip文件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

象州县| 陆丰市| 武安市| 桑日县| 淳安县| 新田县| 石首市| 桓台县| 宁阳县| 临沭县| 晋州市| 延川县| 聊城市| 丽水市| 汾西县| 潼南县| 准格尔旗| 兴海县| 舞钢市| 吐鲁番市| 庆云县| 呈贡县| 衡水市| 台前县| 四川省| 资中县| 彭山县| 福泉市| 红桥区| 兰考县| 天门市| 固始县| 肇东市| 囊谦县| 浦北县| 双鸭山市| 晋城| 甘肃省| 工布江达县| 辉南县| 博乐市|