Zip中没有文件,但是当提取zip时,其中有文件

时间:2018-02-25 08:49:14

标签: php zip zipfile

我到处搜索问题,但我没有发现类似的问题。

我使用以下代码创建一个zip文件。 zip文件的容量似乎正常,因为它有文件。当我双击它时,我可以看到我的zip文件。但是当我解压缩zip文件时,我发现文件已经添加到两个不同的目录和我的文件中。

让我在下面详细解释。

$files = array(
          'bauhaus93regular-1519481745.382.ttf' => '../../../files/task_files/bauhaus93regular-1519481745.382.ttf',
          'dsc_0299-1518894123.175.jpg' => '../../../files/task_files/dsc_0299-1518894123.175.jpg', 
          'sertifika-1518371071.2923.pdf' => '../../../files/task_files/sertifika-1518371071.2923.pdf'
     );

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

header('Content-Description: File Transfer');
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($zipname));
ob_clean();
readfile($zipname);
ob_flush();

zip file status image

有了这个,我可以将文件下载为file.zip。如果我点击两次,我的文件就在里面。但它的大小是14,9 MB。当我解压缩zip时,我可以看到我的所有文件,但文件位于两个不同的目录中并与它们一起使用;

files/task_files/(my_files)
xampp/htdocs/contract/files/task_files/(my_files)
(my_files)

extracted zip file image

第一个目录是我的本地主机地址,第二个目录是我的硬盘和我的文件上的物理目录。

如果你帮忙,我很高兴。提前谢谢。

注意;由于必要,PHP版本为5.7。

1 个答案:

答案 0 :(得分:0)

尝试传递可选的local filename

$files = array(
              'bauhaus93regular-1519481745.382.ttf' => '../../../files/task_files/bauhaus93regular-1519481745.382.ttf',
              'sertifika-1518371071.2923.pdf' => '../../../files/task_files/dsc_0299-1518894123.175.jpg', 
              'sertifika-1518371071.2923.pdf' => '../../../files/task_files/sertifika-1518371071.2923.pdf'
         );

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