PHP ZipArchive-下载的文件说我不是空的,但不是

时间:2019-01-09 13:52:42

标签: php

我有以下代码创建一个ZIP文件,向其中添加文件,然后下载到我的计算机中。

$zip = new ZipArchive();
if ($zip->open('order_sheets.zip', ZipArchive::CREATE) === TRUE){
    $zip->addFile($pdfFilePath);
}
$zip->close();

$file_url = 'order_sheets.zip';
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$file_url);
header('Content-Length: ' . filesize($file_url));
readfile($file_url);

一切正常,但问题是,打开下载的ZIP时,提示“此文件夹为空,否则为空”。如果我右键单击并单击“在这里提取”,内容就会出来。

有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

问题出在Windows的zip实用程序中,该实用程序使用IBM850编码,导致它错误地解释了归档文件内部文件名中的某些字符,包括文件中的_(下划线)。

在此处查看答案: PHP ZipArchive Corrupt in Windows

此处在PHP手册用户注释中进行了说明:http://php.net/manual/en/ziparchive.addfile.php#95725