我有以下代码创建一个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时,提示“此文件夹为空,否则为空”。如果我右键单击并单击“在这里提取”,内容就会出来。
有人知道为什么吗?
答案 0 :(得分:1)
问题出在Windows的zip实用程序中,该实用程序使用IBM850编码,导致它错误地解释了归档文件内部文件名中的某些字符,包括文件中的_
(下划线)。
在此处查看答案: PHP ZipArchive Corrupt in Windows
此处在PHP手册用户注释中进行了说明:http://php.net/manual/en/ziparchive.addfile.php#95725