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

发布于 2024-12-04 12:47:52 字数 100 浏览 0 评论 0原文

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

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

I need to be able to extract a zip file, and insert the names of the files in the zip file into a database.

I've searched around, and found multiple scripts to unpack a zip file, but it seems that I'm not able to get the individual filenames of the files in the zip file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

星光不落少年眉 2024-12-11 12:47:52

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

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”命令行工具

问候。

I would probably suggest to use two system calls:

1) unzip to tmp folder
2) read files from that folder

(updated full working script):

<?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>
<?
}

Pre-requisites
0) will work if you are under unix/linux/mac (won't work under windows)
1) create test.php and paste in it the code above
2) make sure in the same folder where test.php, is folder tmp
3) make sure apache user can write that folder (e.g. chmod 777 tmp)
4) make sure your php allows file uploads
5) make sure your server has "unzip" command line tool

Regards.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文