2011-09-13 9 views
0

zipファイルを解凍し、zipファイルのファイル名をデータベースに挿入する必要があります。PHPが解凍して内容をデータベースに挿入します

zipファイルを解凍するために複数のスクリプトが見つかりましたが、zipファイル内のファイルの個々のファイル名を取得できないようです。

答えて

0

私はおそらく2つのシステムを使用することをお勧め呼び出します。

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の下で動作します(ウィンドウの下では動作しません)
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

関連する問題