2012-05-31 24 views
1

所以這裏是我的問題:我有一個代碼使用對ExportFile的響應,但問題出現在響應代碼之後。後續的代碼不再執行,或者像被讀取但被忽略。對小菜很抱歉。所以這裏是我的代碼:在ASP中的「附件響應」之後運行JavaScript?

fullFilePath = "" + rootPath + "" + Filename + ".xlsx"; 
string fileName = fullFilePath.Substring(fullFilePath.LastIndexOf('\\') + 1); 
byte[] buffer; 

using (FileStream fileStream = new FileStream(fullFilePath, FileMode.Open)) 
{ 
    int fileSize = (int)fileStream.Length; 

    buffer = new byte[fileSize]; 

    // Read file into buffer 
    fileStream.Read(buffer, 0, (int)fileSize); 
} 

Response.Clear(); 

Response.Buffer = true; 
Response.BufferOutput = true; 
Response.ContentType = "application/x-download"; 
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName); 
Response.CacheControl = "public"; 
// writes buffer to OutputStream 
Response.OutputStream.Write(buffer, 0, buffer.Length); 
newFile.Delete(); 


ClientScript.RegisterStartupScript(GetType(), "id", "EnableCtrl()", true); 

在執行此操作後,javascript「EnableCtrl()」未被觸發或觸發。當我刪除與響應相關的代碼部分並將其更改爲其他內容時,JavaScript正在被觸發。那麼如何在響應代碼後運行javascript?這是文件,而不是一後回標記:

回答

1

腳本不會/不能因爲瀏覽器已發送響應觸發這個方法。一個請求。一個迴應。這不是後回標記。

相反,我會建議之一:

  1. 處理在瀏覽器中啓動控制的「客戶端點擊」以及(動作可以用setTimeout延遲)。瀏覽器實際上不會刷新頁面/ DOM,因爲響應中的附件處置方式,這就是爲什麼這會起作用。但是,有沒有客戶端事件如果下載被接受,已經開始或已完成

  2. 更改設計,使「下載」是一個沒有其他副作用的單獨行動。

快樂編碼。


這是可能的圖謀的服務器輔助設置,允許客戶端查詢下載的進度,就像上傳進度指示器。然而,這不是微不足道的或標準的,並且可能仍然不能準確地反映國家。

相關問題