程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> PHP在線打包下載實現代碼

PHP在線打包下載實現代碼

編輯:PHP基礎知識
 

昨天晚上,為了弄這個打包下載的事,弄的事焦頭爛額。有幾個問題,第一個是開始PHP_ZIP.dll的問題。話說只要把PHP.INI裡面的extend_dir裡面的前的”;”號去掉。再重啟IIS或者apache就可以了。

問題是老是找不到系統配置的真正的PHP.INI。

PHP配置圖

PHP配置圖

第二個是告訴你配置文檔的路徑,按著找就可以了。我當時腦袋秀逗了,浪費了很多時間。

這個開啟PHP_ZIP擴展庫以後,就可以開始打包下載了。

 $filename= date("YmdHis");  
  
 $zip = new ZipArchive();//使用本類,linux需開啟zlib,windows需取消php_zip.dll前的注釋  
 
   $zip->open($filename.".zip", ZipArchive::OVERWRITE); //$data 就是從數據庫裡面讀出的數字
    
   foreach( $data as $val){  
   
      $attachfile = "E:\bysj\bysj".$val['fileaddr'].$val['filename']; //寫硬路徑,但建議用PHP環境變量
 
        $attachfile=iconv("UTF-8","GBK",$attachfile); //轉碼,是打包中文文檔的關鍵

	    $zip->addFile( $attachfile , basename($attachfile)); //壓棧

	                       }

    $zip->close();//關閉  

header("Content-type:text/html;charset=utf-8");//設置頁面編號

header("Cache-Control: public");

header("Content-Description: File Transfer");

header('Content-disposition: attachment; filename='.basename($filename)); //文件名  

header("Content-Type: application/zip"); //zip格式的  

header("Content-Transfer-Encoding: binary"); //告訴浏覽器,這是二進制文件   

header('Content-Length: '. filesize($filename)); //告訴浏覽器,文件大小  

@readfile($filename.".zip");

上面的代碼基本就可以實現文檔打包下載了,也解決了中文文檔無法打包下載的問題。
但我數據庫裡面明明是用UTF-8存儲的數據,但為嘛讀出了,ZIP老是找不到文檔呢?一直困惑。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved