2

我知道关于 ZipArchive 及其工作原理有很多问题,但是在遵循所有这些之后,我仍然无法让我的程序正常工作。

我不知道我哪里出错了,因为我有死亡方法并且没有一个被激活。

$path = "/export/scripts/CLOUD/logs/web/Private_Testbox/Jan_28_2013_16_20_44_atvts78_rollout_config/";

$fileName = explode('/', $path);
$zipname = $fileName[count($fileName) - 2];

$zip = new ZipArchive;
$handle = opendir($path);

//Check whether Zip can be opened
if ($zip->open($zipname, ZIPARCHIVE::CREATE) !== TRUE) {
    die("Could not open archive");
}

//Add all files to an array
while ($file = readdir($handle)) 
{
    $zip->addFile($path, $file);
}

closedir($handle);
$zip->close();

//Send zip folder 
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipname . '.zip');
readfile($zip);

此文件下载 zip 文件夹,但其中没有任何内容。

提前感谢您的帮助。

4

1 回答 1

1

die()您在通话中忘记了 a ->addFile(),这意味着您假设文件实际上已添加。

readfile() 不返回目录中文件的完整路径,只返回实际的“本地”文件名,这意味着您正在添加脚本当前工作目录中不存在的文件。尝试:

$zip->addFile($file, $path . $file);
              ^^^^^^^^^^^^^^^^^^^^^

反而。就目前而言,您的代码$path用作嵌入到 zip 中的文件名,并且目录不能用作文件名。如果没有$path . $file, addFile 正在寻找错误的位置,例如它相当于getcwd() . $fileinstead 。

于 2013-01-30T14:52:53.507 回答