2009-03-25 98 views
3

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

 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(); 
     } 

した後、私はブロックを解除したい:私は使用してファイルサーバー側を生成し、この後

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

私は、エクスポートボタンがクリックされたUIをブロックUI。

私は別のオプションを検討している:アヤックスを使用して

  1. 投票は、ファイルが生成されているかどうかを確認するために呼び出します。
  2. ファイルをSessionに保存し、同じページにリダイレクトしてダウンロードを生成します。

しかし、両方のオプションがうまくいくように思えますし、ファイルのダイアログを待つか、またはファイルダイアログを待つことが賢明なJavaScript方法でなければならないと思います。

提案がありますか?

答えて

0

ファイルをセッションに保存しないでください。リソースが膨大な量になります。なぜあなたのフォームデータを「ダウンロードする」ページに投稿するだけではなく、「あなたのファイルは一時的にダウンロードするはずです...」というメッセージが表示されます。これは、download pageに到着したときに、人気のあるダウンロードサイト(www.download.com)を実行する方法です。

これにより、ユーザーはページを表示したときにすべてのデータがPOSTヘッダーに保存されるため、セッションのタイムアウトを気にする必要はありません。

1

これを確認する方法はありません。 ondownloadreadyのようなイベントはありません。 しかし、いくつかの回避策は、私が使用した方法はJavaScriptを使用して、タイムアウトを経由して検出し、UI

詳細はこちらですブロックを解除することができます添付ファイルに加えて、クッキーを送信することです http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser

関連する問題