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

Posted

技术标签:

【中文标题】PHP解压缩zip并将内容插入数据库【英文标题】:PHP unpack zip and insert content into database 【发布时间】:2011-09-13 18:25:03 【问题描述】:

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

我四处搜索,发现了多个解压缩 zip 文件的脚本,但似乎我无法获取 zip 文件中文件的各个文件名。

【问题讨论】:

【参考方案1】:

我可能会建议使用两个系统调用:

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) 确保您的服务器具有“解压缩”命令行工具 问候。

【讨论】:

是的,好的,所以我明白了,但现在发生的只是 $tmp_dir 正在创建。文件如下所示:pastebin.com/19CGCaXg zip 文件来自哪里?在我的示例中,它假设它是通过表单上传的,例如 另外,请确保您的服务器上存在“解压缩”。 是的,zip是通过af表单上传的。 压缩文件是否被复制到临时文件夹中?

以上是关于PHP解压缩zip并将内容插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

获取Zip文件中文件的解压缩流

解压缩并将内容推送到表格视图中

python3向oracle插入数据

python3向oracle插入数据

软件项目技术点(19)——文件的保存和打开(解压缩)

如何解压缩txt.gz文件并使用php存储到数据库中