7

JavaScript を起動して新しい aspx ページを開き、ユーザーがダウンロードできるようにファイルをブラウザにストリーミングするリンクボタンを含む aspx ページがあります。

XP SP3、IE 7、および FireFox 3.5 で開発および単体テストを行う場合、次のコード (キーは Content-Disposition タグの「添付ファイル」部分) を使用すると、ドキュメントを保存するか開くかを尋ねるダイアログ ボックスが表示されます。 、これはまさに私がやりたいことです:

        private void WriteFileToBrowser(Byte[] requestFile, string filename, String m_mimeType, String m_format)
    {
        Response.Clear();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + "." + m_format);
        Response.ContentType = m_mimeType;
        Response.BinaryWrite(requestFile);
        Response.Flush();

    }

これを Windows 2003 サーバーに展開して同じ aspx ページに移動すると、FireFox 3.5 は予想どおりに保存/開くオプションを正しく要求します。これが FF の既定の操作であるためです。

しかし、IE 7 でナビゲートしてクリックしてダウンロードすると、トップが 1/8 秒表示されるポップアップ ウィンドウが表示され、消えます。保存/開くプロンプトが表示されません。

IE 7 -> ツール -> インターネット オプション -> セキュリティ -> カスタム レベル -> ダウンロード

ファイルのダウンロードの自動プロンプトは無効になっています。有効にするためにチェックすると、保存/開くプロンプトが正しく機能します。

だから私の質問は.....誰かがこれを回避しましたか? キャッシュ、プラグマなどのさまざまなヘッダータグで機能すると人々が主張する多くのことを試しましたが、IEのダウンロードプロパティがデフォルトで無効になっているという事実を回避することはできません。

4

5 に答える 5

2

最近、カスタム Web フレームワークで生成されたレポートをダウンロードするための実装で、同じ問題に遭遇しました。調査により、あなたが言及したのと同じアプローチを試みることになりました(Content-Disposition の設定)。

この問題は、IE7 とセキュリティ ゾーンに関連しています。デフォルトでは、特定のアクションはユーザーが明示的に開始する必要があります。まず、保護モードの Internet Explorer を理解して作業することと、ウィンドウの制限についてを確認することから始めることができます。

于 2009-08-13T15:46:37.390 に答える
1

ページを信頼済みサイトに追加すると、ファイルをダウンロードできるようになります。開発中、実行中のすべてのサイトはこのゾーンにあります。

追加して、Internet Explorer を強制することができます。

HttpContext.Current.ApplicationInstance.CompleteRequest();

リクエストの最後まで。

それ以外の場合は、ドキュメントへのリンクを投稿してみてください。これにより、ブラウザはリクエストをユーザー インタラクションのレスポンスとして認識します。

于 2009-08-26T20:27:46.910 に答える
0

JavaScript を使用して新しいページを開く必要がない場合は、aspx ページに対して Response.Redirect() を使用できます。これにより、保存/開くダイアログが開きます。

于 2010-05-27T10:35:02.053 に答える
0

これを試して

protected void Button1_Click(オブジェクト送信者, EventArgs e) { Response.ContentType = "application/pdf"; Response.Clear(); Response.TransmitFile("test.pdf"); Response.End(); }

于 2009-08-19T06:22:05.317 に答える