2010-01-15 77 views
2

請參見問題編寫大塊:Resume in upload file controlASP.Net:file..HTTP文件上傳與恢復

我們找到上述問題的解決方案,我想在這裏工作,並開發用戶控制,可以恢復HTTP文件上傳過程。

爲此,我將在服務器上創建一個臨時文件,直到上傳完成。一旦上傳完成,然後將其保存到所需的位置。

我曾想過的程序是:

  1. 創建一個唯一的名稱服務器上的臨時文件(可能是GUID)。
  2. 讀取文件塊並將其附加到服務器上的此臨時文件。
  3. 繼續步驟1到3,直到到達EOF。
  4. 現在,如果連接丟失或用戶單擊了pause按鈕,文件的寫入將停止,並且臨時文件不會被刪除。
  5. 再次點擊恢復或再次上傳相同的文件將檢查服務器,如果文件存在和用戶是否resumeoverwrite。 (不知道如何檢查它是否是相同的文件。此外,安踏將來自客戶端的塊到服務器。
  6. 點擊resume將從它需要被上傳開始,將它添加到文件在服務器上。 (同樣不知道如何做到這一點

問題:

  1. 這些都是正確的步驟來實現目標?還是需要一些修改?
  2. 我不知道如何實施所有這些步驟。 :-(極品思路,鏈接...

任何幫助表示讚賞...

+0

你有沒有得到這個完成?如果是這樣,你能發表你的發現嗎? – 2013-01-11 00:26:39

回答

2

你正在嘗試是不容易的,但它是可行遵循以下準則:

  1. 編寫AJAX使用在客戶端2個功能:

    • getUploadedPortionFromServer(filename) - 這將要求服務器如果該文件存在,它應該從服務器獲取與FOL的XML響應降脂信息:
      boolean(exist/not exist)size(bytes)md5(string)
      的功能也將它從服務器上了本地文件相同的大小運行MD5,
      如果MD5是一樣的,你可以繼續從點發送它被終止,
      elseif不一樣或大小== 0,重新開始。
    • uploadFromBytes(x) - 將取決於第一個功能。

  2. 在服務器上,你必須寫匹配功能,這將檢查所需要的東西,通過發送XML到客戶端的響應。

    • 爲了有不同的文件名,你應該使用某種用戶標記。
    • 用戶是否登錄到您的服務器?如果是這樣,使用他們的用戶名散列到文件名,這將幫助您區分這些文件。
    • 如果沒有,請使用cookie。