2015-01-21 38 views
2

我有一個ASP.NET應用程序,它允許用戶在客戶端自動下載文件,但在文件下載後我的代碼是在文件下載失敗後執行,我的頁面停止工作,並在我刷新頁面之前一直處於暫停狀態。 我的代碼是在文件下載後執行的代碼在Asp.net中不起作用

  cloudBarcodeService.generateFile_Barcode(barcodeList).WriteTo(writer); 
      writer.Flush(); 
      Response.Clear(); 
      byte[] byteArray = stream.ToArray(); 
      Response.AppendHeader("Content-Disposition", "filename=barcode.xml"); 
      Response.AppendHeader("Content-Length", byteArray.Length.ToString()); 
      Response.ContentType = "application/octet-stream"; 
      Response.BinaryWrite(byteArray); 
      writer.Close(); 

      //following text doesn't update 
      lblSucess.text="Successfully Downloaded"; 
+0

您是否通過處理程序提供文件?如果文件下載位於代碼後面,我只需進行手動回發 – qamar 2015-01-21 07:38:02

回答

1

當你這樣發送文件到客戶端,您指定的標題,內容類型,一切以下載數據文件,並且不是要顯示在頁面上。下載完成後,完成,連接關閉 - 在客戶端啓動一些新操作之前,您無法做任何其他操作。

您可以在開始下載之前啓動重定向(examples in a different SO question) - 這可能會起作用,並且可以在下載啓動後幾秒鐘重定向回原始頁面。在那裏,你可以接受一個參數或者某個東西來表示應該顯示「成功下載」的消息。

另一方面,你確定你要想要做到這一點嗎?一旦下載開始,客戶端(可能是大量不同瀏覽器中的一個)通常會讓用戶知道下載是如何進行的,以及何時完成。在服務器端,你可能甚至不知道它是如何結束的 - 所有的服務器知道它已經被髮送。

0

謝謝大家對你的幫助,我的問題在aspx頁面

<asp:PlaceHolder ID="PlaceIframe" runat="server" Visible="false"> 
<iframe src="<%=DownloadUrl %>" style="width:1px; height:1px; display:none;"></iframe> 
</asp:PlaceHolder> 

使用下面的代碼從代碼後面指定的URL DownloadUrl解決。

相關問題