5


0

IE7でファイルをダウンロードできませんが、Firefox、Chromeなどで問題はありません。

暗号化された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以外のブラウザではダウンロードは魅力的に動作します、 'no-cache’ヘッダに関連した問題を見たことがありますが、utf-8文字については話しませんが、 utf-8文字はありません(そして$ filenameはutf-8文字も持っていません)。

3 Answer


8


ヘッダを送信して解決しました

header( 'Pragma:public');ヘッダー( 'Cache-Control:max-age = 0');

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


3


http://bytes.com/forum/thread554529.html [このサイト]はIE6のあなたのものと同じような問題を抱えています。 要約する:

_ _ session_start()は、デフォルトで「no-store」を含むキャッシュ制御ヘッダーを送信します。 Internet Explorerはこれを少し文字どおりに扱いますが、その場合には適切なエラー処理がないため、出力ページをディスクに保存しようとすると暗号化されて爆発します。

session_start()の前に、 "session_cache_limiter( 'none');"を追加するか、その関数を調べて必要に応じてリミッターを微調整してください(おそらく 'private’がマークに近くなります)。 _ _

私はあなたが投稿したコードスニペットが `session_start();`への呼び出しを含んでいないことを認識しています、しかし私はあなたがそれを呼び出しをしてそしてちょうど私たちを見せなかったならば私はこの可能な解決策を共有すると思いました。


0


これを使って

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

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

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