IE7ではファイルをダウンロードできないのですが、FirefoxやChromeなどでは問題ないのでしょうか?

StackOverflow https://stackoverflow.com/questions/117372

質問

暗号化された URL を受け取り、そこからダウンロードを生成するスクリプトがあります。このスクリプトの最も批判的な部分は次のとおりです。

$MimeType = new MimeType();
$mimetype = $MimeType->getType($filename);
$basename = basename($filename);
header("Content-type: $mimetype");
header("Content-Disposition: attachment; filename=\"$basename\"");
header('Content-Length: '. filesize($filename));
if ( @readfile($filename)===false ) {
  header("HTTP/1.0 500 Internal Server Error");
  loadErrorPage('500');
}

ダウンロードは IE 以外のどのブラウザでも魅力的に機能します。「キャッシュなし」ヘッダーに関連する問題を見たことがありますが、そのようなものは送信しません。UTF-8 文字について話していますが、何もありません。 utf-8 characters($filename には utf-8 文字も含まれていません)。

役に立ちましたか?

解決

このサイト IE6 にも同様の問題があります。要約する:

session_start() はデフォルトで、「no-store」を含むキャッシュ制御ヘッダーを送信します。Internet Explorerは文字通りこれを少し取り上げますが、ケースに適切なエラー処理がありません。その結果、出力ページをディスクに保存しようとすると、不可解に爆発します。

session_start()の前に、「session_cache_limiter( 'none'); "を追加するか、その関数を調べてリミッターを適切に調整します(おそらく「プライベート」はマークに近い)。

あなたが投稿したコード スニペットには、への呼び出しが含まれていないことに気づきました。 session_start();, しかし、実際に電話をかけてきたのに表示されなかった場合に備えて、この考えられる解決策を共有しておこうと思いました。

他のヒント

ヘッダーを送信することで解決しました

header('Pragma: public');
header('Cache-Control: max-age=0');

session_start() が独自にヘッダーを送信することを知りませんでした。

次のコメントセクションで答えを見つけました。 エラー:Internet Explorer が Web サーバーから FileName をダウンロードできない

これを使って

IE7ブラウザでは、インターネットオプション - >セキュリティ--->カスタムレベル - >ダウンロードに移動してから、ファイルのダウンロードのために自動化プロンプトを有効にしました。

これで問題は解決します。

これが役立つことを願っています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top