PHP解压缩zip并将内容插入数据库

时间:2011-09-13 18:25:03

标签: php database zip unpack

我需要能够提取zip文件,并将zip文件中的文件名称插入到数据库中。

我一直在搜索,发现多个脚本来解压缩zip文件,但似乎我无法获取zip文件中文件的单个文件名。

1 个答案:

答案 0 :(得分: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并粘贴上面的代码
2)确保在test.php所在的文件夹中,是文件夹tmp
3)确保apache用户可以写该文件夹(例如chmod 777 tmp)
4)确保你的php允许文件上传
5)确保您的服务器具有“解压缩”命令行工具

问候。