2011-09-13 73 views

回答

0

我可能會建議使用兩個系統調用:

1)解壓縮到TMP文件夾中 2)從該文件夾讀取文件

(更新完整的工作腳本):

<?php 

if (isset($_POST["fsubmit"])){ 
    echo "<pre>"; 
    var_dump($_POST); 
    var_dump($_FILES); 
    $tmp_dir = "tmp/" . microtime(true); 
    if (!file_exists($tmp_dir)){ 
     mkdir($tmp_dir); 
    } 
    if (is_uploaded_file($_FILES["file"]["tmp_name"])){ 
     move_uploaded_file($_FILES["file"]["tmp_name"], $tmp_dir . "/a.zip"); 
     exec("unzip -z -j $tmp_dir $tmp_dir" . "/a.zip"); 
     exec("ls $tmp_dir", $out); 
     echo "Files in the archive:\n"; 
     foreach ($out as $file){ 
      $file = trim($file); 
      echo "File: $file,", filesize($tmp_dir . "/" . $file)."b\n"; 
     } 
     exec("rm -rf $tmp_dir"); 
    } 
} else { 
?> 
<form action="test.php" method="POST" enctype="multipart/form-data"> 
<input type="file" name="file" /> 
<input type="submit" name="fsubmit" value="upload"> 
</form> 
<? 
} 

先決條件
0)將工作,如果你在UNIX/Linux/MAC下(不會在Windows下工作)
1)創建test.php並粘貼它的代碼ab ove
2)確保在test.php文件夾所在的文件夾中tmp
3)確保apache用戶可以寫入該文件夾(例如, CHMOD 777 TMP)
4)確保你的PHP允許文件上傳
5)請確保您的服務器 「解壓縮」 命令行工具

問候。

+0

是的好吧,所以我明白了,但是現在發生的所有事情是$ tmp_dir被創建。 該文件看起來像這樣: http://pastebin.com/19CGCaXg – RasmusG

+0

其中是zip文件來自哪裏?在我的例子中,它假定它是通過表單上傳的,例如, jancha

+0

另外,請確保您的服務器上存在「unzip」。 – jancha