Php 将文件添加到zip会添加包含文件的文件夹

Php 将文件添加到zip会添加包含文件的文件夹,php,zip,Php,Zip,因此,我有一个目录,在它的根目录中包含一个文件文件夹,在它里面有一个测试文件夹,其中包含txt文件,然后我有以下php代码: 函数displayZip($name) $zip=新的ZipArchive(); $filename=“files/$name.zip”; 如果($zip->open($filename,ZipArchive::CREATE)!==TRUE){ 退出(“无法打开”); } $dir=“files/$name/”; createZip($zip$dir); $zip->c

因此,我有一个目录,在它的根目录中包含一个
文件
文件夹,在它里面有一个
测试
文件夹,其中包含txt文件,然后我有以下php代码:


函数displayZip($name)
$zip=新的ZipArchive();
$filename=“files/$name.zip”;
如果($zip->open($filename,ZipArchive::CREATE)!==TRUE){
退出(“无法打开”);
}
$dir=“files/$name/”;
createZip($zip$dir);
$zip->close();
rmdir(“文件/$name”);
}
函数createZip($zip,$dir,$name){
if(is_dir($dir)){
如果($dh=opendir($dir)){
while(($file=readdir($dh))!==false){
//如果文件
if(is_文件($dir.$file)){
如果($file!=''&&$file!='.&&&$file!=''..')){
$zip->addFile($dir.$file);
}
}
}
closedir($dh);
}
}
它在
$name
变量下为zip取一个名称,然后在
$filename
下指定完整路径,然后创建zip存档,然后调用createZip函数,该函数打开与zip同名的目录,然后将此目录下的文件添加到zip中,但是当我调用
displayZip时('test')
然后打开创建的zip,我看到它在里面添加了
文件/test/
文件夹。所以我的问题是:

  • 它在代码中的何处添加这些文件夹,是否位于
    addFile
    行的
    $dir.$file
    部分
  • 我该怎么做才能只将文件放在zip中

  • 提前感谢

    默认情况下,
    ZipArchive
    会将文件夹添加到存档中。您可以通过在
    addFile()
    中指定“localname”作为第二个参数来删除文件夹。该“localname”将是zip存档中的结构。有关详细信息,请参阅


    rmdir可能无法工作,因为目录不是空的。

    非常感谢,它解决了我的问题!关于rmdir,您也是对的,我忘记了这个错误。。。