2010-12-12 32 views
2

我有一個頁面,從另一個域下載一個大的HTML文件,然後將其提供給用戶。該文件大約100k - 10MB,通常需要大約5分鐘。什麼是想做這樣的事情,使用戶體驗更好。更好的用戶體驗的網站在asp.net MVC

  • 下載文件
  • 如果文件沒有在10秒內下載,然後顯示一個頁面,告訴用戶該文件被下載
  • 如果服務器完成下載1秒那麼它將服務已下載html

可以這樣做嗎?我需要使用異步功能嗎?

更新問題:下載的文件是一個HTML文件

回答

0

我想你應該:

  1. 返回一個HTML頁面,用戶馬上,告訴他們轉移已經開始。
  2. 在服務器上的另一個進程中從其他域開始下載。
  3. 讓步驟1中的HTML重複加載,以便您可以檢查下載是否已完成,並且可能會向用戶提供ETA或更新。
  4. 當初始傳輸完成時,向用戶返回鏈接。
+0

1號的問題是有些時候下載速度非常快(在1秒內),它應該只是提供下載文件。 – Joanne 2010-12-12 19:48:36

+0

我不知道步驟1是如何產生問題的......如果文件在1秒內下載完成,那麼用戶也會在1秒後得到下載鏈接。 – 2010-12-12 20:09:58

+0

我的不好。應該澄清該文件是HTML。所以如果服務器在1秒內完成下載,那麼它將提供下載的html。 – Joanne 2010-12-12 20:15:35

0

這聽起來像你需要使用一個等待頁面,每隔一段時間刷新一次,並顯示下載狀態。例如,可以使用System.Threading.Task在單獨的線程上運行下載。

+1

無需刷新整個頁面...而是通過ajax-call輪詢服務器上的下載器服務以瞭解狀態和進度。 – 2010-12-12 20:08:03

+0

是的,聽起來不錯:-) – Chad 2010-12-12 20:28:11

1

爲了提供「異步」文件下載,請嘗試Google正在使用的技巧:創建一個隱藏的iframe並將其設置爲要下載的文件的源代碼。然後,您可以在通過iframe下載文件的同時在原始頁面上運行JavaScript。

+0

谷歌是真的這麼做嗎? – Thiago 2012-06-08 16:34:40

相關問題