我正在尝试压缩目录中的文件,但不断收到以下错误:
警告: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将文件存储在数组中,所以我无法看到问题出在哪里(也许我采取了完全错误的路径来实现这一目标?)
任何帮助将不胜感激!谢谢!
答案 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);