0

次のコードを使用して、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で完全に機能しますが、InternetExplorerでは何もしません。グーグル中に私は潜在的な解決策を見つけ、コードを次のように変更しました:

$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で動作しています

4

1 に答える 1