2012-10-07 50 views
0

我需要一個php腳本來提取文件(包含文件夾和子文件夾)並創建一個日誌,其中插入一些關於解壓縮文件的信息。Php - 用* .csv文件登錄提取zip文件

現在下面的腳本提取一個zip文件(帶有文件夾和子文件夾),但只在csv文件中插入最後一個文件提取信息。我如何解決它以創建所有文件提取信息的列表。

感謝您的幫助。

file = "test.zip"; 
$dir = getcwd(); 
function Unzip($dir, $file, $destiny="") 
{ 
$dir .= DIRECTORY_SEPARATOR; 
$path_file = $dir . $file; 
$zip = zip_open($path_file); 
$_tmp = array(); 
$count=0; 
if ($zip) 
{ 
    while ($zip_entry = zip_read($zip)) 
    { 
     $_tmp[$count]["filename"] = zip_entry_name($zip_entry); 
     $_tmp[$count]["stored_filename"] = zip_entry_name($zip_entry); 
     $_tmp[$count]["size"] = zip_entry_filesize($zip_entry); 
     $_tmp[$count]["compressed_size"] = zip_entry_compressedsize($zip_entry); 
     $_tmp[$count]["mtime"] = ""; 
     $_tmp[$count]["comment"] = ""; 
     $_tmp[$count]["folder"] = dirname(zip_entry_name($zip_entry)); 
     $_tmp[$count]["index"] = $count; 
     $_tmp[$count]["status"] = "ok"; 
     $_tmp[$count]["method"] = zip_entry_compressionmethod($zip_entry); 

     if (zip_entry_open($zip, $zip_entry, "r")) 
     { 
      $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 
      if($destiny) 
      { 
       $path_file = str_replace("/",DIRECTORY_SEPARATOR, $destiny . zip_entry_name($zip_entry)); 
      } 
      else 
      { 
       $path_file = str_replace("/",DIRECTORY_SEPARATOR, $dir . zip_entry_name($zip_entry)); 
      } 
      $new_dir = dirname($path_file); 

      mkdir($new_dir); 

      $fp = fopen($dir . zip_entry_name($zip_entry), "w"); 
      fwrite($fp, $buf); 
      fclose($fp); 

      zip_entry_close($zip_entry); 

     } 
     echo "\n</pre>"; 
     $count++; 
     $named = zip_entry_name($zip_entry);        
     $outputfile = "log.csv"; 
     if (!$outfilefp = fopen($outputfile, "w")) 
     die("<br>No write on $outputfile"); 
     else 
     echo "<br>Add lines to csv file"; 
     $temp = array($path_file,$new_dir,$named); 
     fputcsv($outfilefp, $temp, ";"); 
    } 

    zip_close($zip); 
} 
} 
    Unzip($dir,$file); 

回答

0

實際上它是插入每一個,但你每次都覆蓋最後插入的文件,所以你只能看到最後一個。對於fopen模式應該是一個W¯¯

'W' 寫入方式打開;將文件指針放在 文件的開頭,將文件截斷爲零長度。如果文件不存在 ,請嘗試創建它。

'a'僅供打印;將文件指針放在 文件的末尾。如果文件不存在,請嘗試創建它。