我有一个网站,我使用以下代码强制通过 PHP 下载文件:
$ZipData = file_get_contents($zipFilename);
$ZipSize = filesize($zipFilename);
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=".$ZipTitle.".zip");
echo $ZipData;
虽然这在 Chrome 和 Firefox 中运行良好,但在 Internet Explorer 中根本没有任何作用。在谷歌搜索时,我找到了一个潜在的解决方案并将代码更改为如下:
$ZipData = file_get_contents($zipFilename);
$ZipSize = filesize($zipFilename);
if (strstr($HTTP_USER_AGENT,"MSIE")){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: application-download");
header("Content-Length: $ZipSize");
header("Content-disposition: attachment; filename=".$ZipTitle.".zip");
header("Content-Transfer-Encoding: binary");
}else{
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=".$ZipTitle.".zip");
}
echo $ZipData;
但仍然没有运气。我不知道它为什么会失败,也不知道从哪里开始寻找错误或问题,这只是我不知道的一些 IE 错误吗?我应该从哪里开始尝试寻找解决方案?
注意:$ZipTitle 将始终为“TexturePacker_Pack_xxx”,其中 xxx 是递增的数字。$ZipFilename 是一个现有的 zip 文件,它在文件发送到浏览器后取消链接。
编辑:有问题的网站和代码在http://www.texturepacker.net上运行