麻烦压缩目录中的所有文件?

时间:2015-03-19 21:51:43

标签: php

我正在尝试压缩目录中的文件,但不断收到以下错误:

警告:ZipArchive :: addFile()期望参数1是一个有效的路径,在C:\ xampp \ htdocs \ tags \ download.php中给出的数组

我的代码如下:

opendir($dir);
$listfiles = scandir($dir);

        $files = array($listfiles);

        $zipname = 'newzip.zip';
        $zip = new ZipArchive;
        $zip->open($zipname, ZipArchive::CREATE);
        foreach ($files as $file) {
          $zip->addFile($file);
        }
        $zip->close();

我要做的是打开一个目录,将所有文件添加到一个数组($ listfiles)中,然后将数组中的文件添加到zip文件夹中。我可以看到使用vardump将文件存储在数组中,所以我无法看到问题出在哪里(也许我采取了完全错误的路径来实现这一目标?)

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

opendir($dir);
$listfiles = scandir($dir);
$files = array($listfiles); // this is why.

scandir()已经返回一个数组,我不知道你为什么要在它周围包裹另一个数组,但那是你的问题。

答案 1 :(得分:0)

您遇到的问题是您实际上在数组中有一个数组。

http://php.net/manual/en/function.scandir.php 根据文档,scandir()返回一个文件数组。

然后,当您这样做时,继续将该数组添加到另一个数组中 $ files = array($ listfiles);

您的阵列的结构现在看起来像[[file,file,file]]

当你到达for循环时,它只循环一次,接收那个实际上是数组的0索引,因此就是错误。

解决方案: 删除数组($ filelist);