0

そのため、すべての IE ダウンロード スクリプト エラーを読み、ほぼすべての解決策を試しました。これはhereからの最終的なコードですが、それでも問題は解決しません。

私のリンクは次のようなものです: http://www.example.com/download.php?file=example.html

私のダウンロード スクリプトは、試したすべてのブラウザで動作します。ただし、IE8 で新しいマシンまたはキャッシュをクリアしてテストすると、最初にダウンロードしようとすると、「IE はファイル download.php をダウンロードできません。 example.com...」。

ここでもう一度Enterキーを押すと、ファイルのダウンロードが完全に機能します。問題はありません。ファイルが見つかり、ダウンロード可能です。しかし、キャッシュをクリアするか、以前に実行したことのない IE8 を使用してラボ内の別のマシンで試してみると、最初にエラーが再びスローされます。初回だけで、その後は大丈夫です。髪をかきむしっています、助けてください。これが私のコードです...

//ini_set('error_reporting', E_ALL);
//ini_set('display_errors', 1);
set_time_limit(0);

$filepath = '/var/www/html/securitycoverage.com/scportal/redirect/www.securitycoverage.com/main/pages/';

$filename = $filepath.$_GET['file'];

if (!is_file($filename)) {
  die('The file appears to be invalid.');
}

$filepath = str_replace('\\', '/', realpath($filename));
$filesize = filesize($filepath);
$filename = substr(strrchr('/'.$filepath, '/'), 1);
$extension = strtolower(substr(strrchr($filepath, '.'), 1));

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.sprintf('%d', $filesize));
header('Expires: 0');

// check for IE only headers
if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) {
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
} else {
  header('Pragma: no-cache');
}

$handle = fopen($filepath, 'rb');
fpassthru($handle);
fclose($handle);
4

1 に答える 1

2

コードにエラーがあります。使用する

$mime = array('application/octet-stream');
header('Content-Type: '.$mime[0]);

また

header('Content-Type: application/octet-stream');
于 2013-08-06T14:08:04.237 に答える