4

ASP.Net、JQuery、BlockUIを使用して、ファイルのダウンロードダイアログが表示された後にUIのブロックを解除しようとしています。

エクスポートボタンがクリックされたときにUIをブロックします。

   <script type="text/javascript">     
    $(document).ready(function(){        
        $('#<%= BtnExport.ClientID%>').click(function(){
            $.blockUI(); 
        });
    });    
    </script>

この後、次を使用してファイルサーバー側を生成します。

        private void SendFileToUser(byte[] file, string contentType, string filename)
        {
            Response.Clear();
            Response.ContentType = contentType;
            Response.AppendHeader("Content-Disposition", "attachment; filename="+filename);
            Response.OutputStream.Write(file,0,file.Length);
            Response.OutputStream.Flush();   
            Response.End();
        }

このコードが実行されたら、UIのブロックを解除したいと思います。

私はさまざまなオプションを検討しました:

  1. Ajax呼び出しを使用してポーリングし、ファイルが生成されているかどうかを確認します。
  2. ファイルをセッションに保存し、同じページにリダイレクトしてからダウンロードを生成します。

しかし、どちらのオプションも厄介なように思われます。ファイルダイアログを処理したり、ファイルダイアログを待ったりするための賢いJavaScriptの方法が必要だと思います。

助言がありますか?

4

3 に答える 3

1

これを確認する方法はありません。ondownloadready のようなイベントはありません。しかし、いくつかの回避策があり ます http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser

于 2013-04-11T07:49:49.573 に答える
0

ファイルをセッションに保存しないでください。リソースを大幅に浪費します。フォーム データを「ダウンロード」ページに投稿して、「ファイルをすぐにダウンロードする必要があります...」というメッセージを表示してみませんか。これは、www.download.comのような人気のあるダウンロード サイトがダウンロード ページに到達したときに行う方法です。

これにより、ユーザーは更新するだけで再試行する機会が与えられます。ページに到着したときにすべてのデータが POST ヘッダーにあるため、セッションのタイムアウトについて心配する必要はありません。

于 2009-03-25T21:45:13.667 に答える