PHP ZipArchive 下载工作但不添加文件到 zip

标签 php http ziparchive

我知道有很多关于 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 文件夹,但里面什么也没有。

提前感谢您的帮助。

最佳答案

您在 ->addFile() 调用中忘记了 die(),这意味着您假设文件确实已添加。

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

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

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

关于PHP ZipArchive 下载工作但不添加文件到 zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606753/

相关文章:

PHP 与 SQL Server 2005+

php - 我无法将数据存储到 MySQL 中

java - Apache HTTP BasicScheme.authenticate 已弃用?

ios - SSZipArchive 的 C header 中的 "Include of non-modular header inside framework module"

PHP 压缩存档 : Finding the name of the zipped folder after unzipping

php - sphinx 按类别搜索过滤器

php - 如何使用 .htaccess 隐藏我的 URL 参数

java - HttpConnection 不要关闭

javascript - 当 XMLHttpRequest 中止时会发生什么?

php - ZipArchive 无法打开文件 - 错误代码 : 19