【发布时间】:2025-11-27 18:00:01
【问题描述】:
我到处搜索问题,但没有找到类似的问题。
我使用以下代码创建一个 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();
有了它,我可以将文件下载为 file.zip。如果我点击两次,我的文件在里面。但它的大小是 14,9 MB。当我解压 zip 时,我可以看到我的所有文件,但这些文件位于两个不同的目录中并与它们同在;
files/task_files/(my_files)
xampp/htdocs/contract/files/task_files/(my_files)
(my_files)
第一个目录是我的本地主机地址,第二个是我硬盘上的物理目录和我的文件。
如果你能提供帮助,我很高兴。提前致谢。
请注意;由于需要,PHP 版本是 5.7。
【问题讨论】:
-
"如果我点击两次,里面没有任何文件。" ——这是一个非常粗略的观察。稍微解释一下怎么样?如果必须的话,可以使用截屏视频吗?尝试过另一个 ZIP 工具了吗?邮编测试?实际的标头调试(cmdline wget/curl)?尝试重新安装 Windows(必须从模糊的描述中假设您是 Windows 用户)?或者如果这是关于 PHP 代码:error_reporting 说什么?它在 CLI 上的表现如何?
-
感谢您的评论。但我从来没有被如此糟糕地解释过。对不起,我的英语不够好:) 我在我的问题上放了一些图片。我尝试了 error_reporting,但 zip 下载浏览器窗口关闭,所以我看不到错误消息。
-
尝试将这些文件移动到与php文件相同的目录并修改
$files = array('file1.pdf','file2.tff');