PHP将文件解压缩到目录中,更改解压缩文件夹的名称

时间:2015-09-28 18:45:30

标签: php unzip file-rename ziparchive php-zip-archive

是否可以拦截解压缩目录以更改解压缩文件夹的名称?

我正在使用PHP ZipArchive类来执行此操作。解压缩工作正常,我只想在解压缩文件夹的名称中添加时间戳。

$zip = new ZipArchive;
if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
    $zip->extractTo($destinationFolder);
    $zip->close();
} else {
    return FALSE;
}
编辑:为了进一步解释需要,我的功能目前在解压缩时覆盖同名文件夹。我希望在新文件夹的时间戳上加以防止这种情况发生。

1 个答案:

答案 0 :(得分:3)

我假设您需要将文件解压缩到具有当前日期的特定文件夹,基于此,您可以尝试:

$zipFile = "test.zip";
$fnNoExt = basename($zipFile, ".zip");
$date = new DateTime();
$now = $date->getTimestamp();
$destinationFolder = "/some/path/$fnNoExt-$now";

$zip = new ZipArchive;
if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
    if(!is_dir($destinationFolder)){
        mkdir($destinationFolder,  0777);
    }
    $zip->extractTo($destinationFolder);
    $zip->close();
} else {
    return FALSE;
}

它将获取当前Timestamp并将其附加到文件夹名称,如果文件夹不存在,则创建它并解压缩到它。

<强>更新

我已经更新了代码,因此它获得了zipFilename没有扩展名并将其用于新的目录名称,在这种情况下,它将创建一个名为test-1443467510的新目录

注意:
确保您已将权限写入/some/path/