IE7のファイルダウンロードダイアログが消える
-
05-07-2019 - |
質問
最新のサービスパックがインストールされているIE7では、次のコードは正しく実行されません。
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", "attachment;filename=Contacts.xls");
response.ContentType = "application/octet-stream";
System.Text.UnicodeEncoding Encoding = new System.Text.UnicodeEncoding();
byte[] unicodeBytes = {255,254};
int length = 2 + Encoding.GetByteCount(_exportContent); // _exportContent is string.
response.AddHeader("Content-Length", length.ToString());
response.OutputStream.Write(unicodeBytes, 0, 2);
unicodeBytes = Encoding.GetBytes(_exportContent);
response.OutputStream.Write(unicodeBytes, 2, unicodeBytes.Length);
response.End();
js(window.open())でaspxページを開いて、Page_Load()で上記のコードを実行しています。
奇妙なことは、ウィンドウがポップアップし、ファイルダイアログをロード/表示しようとすると、ポップアップウィンドウがブロックされたような音が聞こえることです(ただし、ポップアップブロッカーは無効になっています!)。
追加情報:
-この動作は、XPとW2k3(IE7& FW 3.5 SP1&最新のサービスパック以外は何もインストールされていない実際のWebサーバーです)の両方で発生します。
-FW 2.0でも同じコードが正常に機能します
-Firefoxでは、ファイルダイアログを表示するのに問題はありません。
他の誰かが同じ問題に遭遇し、IE7で動作するように解決策を提供できるかどうか興味があります。
乾杯、
ディミ
解決
IEに explicitly に伝えるヘッダーを追加して、ファイルをキャッシュします。 IEには、キャッシュなしファイルとして送信されたファイルを適切に保存できないという既知のバグがあります。
他のヒント
私は同じ問題を抱えていたので、1時間かけてまったくイライラしていました。いつものように、Microsoft IEブラウザはすべての頭痛の種です。他のブラウザーではすべて正常に機能しました。解決策は簡単です。 ユーザーは、IE7の設定を調整する必要があります。 「ツール」> 「インターネットオプション」> [セキュリティ]タブ> [インターネット]または[ローカルイントラネット]の場合、[カスタムレベル...]ボタンをクリックしてセキュリティ設定を調整します
「ダウンロード」ノードに移動 '>ファイルのダウンロードの自動プロンプト '> [有効にする]をオンにします
それは私のユーザーのためにそれを修正しました。
役立つこと。
イントラネットでこの問題が発生し、ダウンロードの自動プロンプトが機能しませんでした(すでに選択されていました)が、これは機能しました...
ツール->インターネットオプション
[セキュリティ]タブで‘ローカルイントラネット’を選択します[サイト]をクリックします
[詳細設定]をクリック
タイプ“ http://your.url.com” [追加]をクリックします
[閉じる]をクリックします-> OK-> OK
これがあなたにも役立つことを願っています;)
ダイアログボックスが消えないようにすることはできません。これは、アプリケーションが[webmethod]にアクセスして、結果をExcelにダウンロードしようとしているページに渡す情報を収集するときに発生します。
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileNameToUse + "\"");
Response.CacheControl = "Public";
Response.Write(output);
Response.Flush();
Response.Close();
これは、IPアドレス(999.11.1.111 \ default.aspx ....)を使用してWebサイトにアクセスする場合にのみ発生するようです。 loacalhost \ default.aspx経由でアクセスするときに機能します
セキュリティがこの問題を引き起こしているかどうかをテストするには、ターゲットを_selfに設定します。 IEの上部に警告バーが表示されます。 これが原因である場合は、IEのセキュリティを確認してください。具体的には、ダウンロード部分のプロンプト。