PHP 将文件解压缩到目录中,更改解压缩文件夹的名称
PHP unzip file into directory, change unzipped folder's name
是否可以拦截解压目录,改变解压文件夹的名称?
我正在使用 PHP ZipArchive class 来执行此操作。解压缩工作正常,我只是想在解压缩文件夹的名称中添加一个时间戳。
$zip = new ZipArchive;
if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
$zip->extractTo($destinationFolder);
$zip->close();
} else {
return FALSE;
}
编辑:为了进一步解释需求,我的功能目前正在解压缩时覆盖同名文件夹。我希望将时间戳附加到新文件夹以防止这种情况发生。
我假设您需要将文件解压缩到具有当前日期的特定文件夹,基于此,您可以尝试:
$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
[=15 的新目录=]
注意:
确保您具有对 /some/path/
的写入权限
是否可以拦截解压目录,改变解压文件夹的名称?
我正在使用 PHP ZipArchive class 来执行此操作。解压缩工作正常,我只是想在解压缩文件夹的名称中添加一个时间戳。
$zip = new ZipArchive;
if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
$zip->extractTo($destinationFolder);
$zip->close();
} else {
return FALSE;
}
编辑:为了进一步解释需求,我的功能目前正在解压缩时覆盖同名文件夹。我希望将时间戳附加到新文件夹以防止这种情况发生。
我假设您需要将文件解压缩到具有当前日期的特定文件夹,基于此,您可以尝试:
$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
[=15 的新目录=]
注意:
确保您具有对 /some/path/