我正在使用 php ZipArchive 即时创建一个 zip 文件并将其发送回用户。我将压缩文件临时存储在文档根目录上方的文件夹中,然后将其与代码一起发回
header('Content-type:application/zip');
header('Content-Disposition: inline; filename="'.("file.zip").'"');
header("Content-Transfer-Encoding: binary");
header("Content-Length:".filesize($file));
$fh = fopen($file,'rb');
fpassthru($fh);
在首次发布后
$zip->close()
以确保文件未打开。我遇到的问题是 - 存储的 zip 文件是一个有效的存档,我可以在 Windows 7、7Zip、WinZIP 等中打开它。但是,当我使用上面的代码发送文件时,它最终会得到一个 0xD 0xA 对在文件的开头,这足以使其损坏。我无法弄清楚这些角色可能来自哪里。这是 fopen/fpassthru 的已知错误吗?任何帮助将非常感激。