【问题标题】:Extract folder name only from zip archive仅从 zip 存档中提取文件夹名称
【发布时间】:2013-08-12 10:05:07
【问题描述】:

我创建了一个 PHP 脚本,用于上传文件并将其解压缩并在 zip 中获取文件夹名称并将其名称和路径插入 db。但是,它不会从 zip 存档中提取文件夹名称,也不会像我想要的那样获取路径名称。它提取我只想要目录名的所有目录和文件名。假设我有一个名为 abc.zip 的 zip 文件,它包含这样的文件夹 a ->b->c ab ->bc 我想要的是能够只获取像 a 和 b 这样的 parnet 目录名,目前它获取所有目录名和文件名。

$zip = new ZipArchive;
$zip->open($filen);
$zip->extractTo($path);
$zip->close();

$zip = new ZipArchive;
if ($zip->open($filen) === true) {
    for($i = 0; $i < $zip->numFiles; $i++) {
        $filename = $zip->getNameIndex($i);
        $fileinfo = pathinfo($filename);
        $db->con->query("Insert into files (rand) values ('$filename')");
    }                  
    $zip->close();                  
}

【问题讨论】:

    标签: php zip


    【解决方案1】:

    你可以这样做:

    $fileinfo = pathinfo($filename,PATHINFO_DIRNAME);
    $db->con->query("Insert into files (rand) values ('$fileinfo')");
    

    【讨论】:

    • 你能告诉我在哪里定义PATHINFO_DIRNAME吗?
    • PATHINFO_DIRNAME 是 pathinfo 的参数。见这里:php.net/manual/en/function.pathinfo.php
    • 这行不通,它只在数据库中插入点而不是文件夹名称?
    • 那么这意味着该文件不在子文件夹中。
    • 不,我刚刚上传了一个名为 n.zip 的 zip 文件,其中包含一个名为 n 的文件夹,其中还有另一个我不想列出的文件夹和一个 html 文件。当我将文件名更改为完整路径时更新,然后它只是将文件路径插入数据库中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多