0

zipファイルを抽出し、zipファイル内のファイルの名前をデータベースに挿入できるようにする必要があります。

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

4

1 に答える 1

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 を使用している場合は機能します (Windows では機能しません)
1) test.php を作成し、上記のコードを貼り付けます
2) test.php と同じフォルダーにあることを確認します。フォルダーは tmp です
3) apache ユーザーがそのフォルダーに書き込みできることを確認します (例: chmod 777 tmp)
4) php でファイルのアップロードが許可されている
ことを確認します 5) サーバーに「unzip」コマンド ライン ツールがあることを確認します

よろしくお願いします。

于 2011-09-13T18:33:55.537 に答える