2010-10-13 43 views
2

我想知道如何檢查文件上傳/下載了多少?我正在使用HttpWebRequest如何檢查HttpWebRequest上傳的進度?

+0

那麼你是否在寫/讀'HttpWebRequest'的輸入/輸出流時處理緩衝?通過緩衝,你有一個自然的迭代來增加進度。 – 2010-10-13 14:19:46

+0

我可能是錯的,但所有的緩衝將只在客戶端進展正確嗎?不是我實際發送的數據。或者你有一些代碼或鏈接讓我看看你的意思?順便說一句,我目前的代碼看起來像http://codepad.org/gK16e0NU – 2010-10-14 10:00:16

+0

可能的重複[Silverlight 4 RC文件上傳與上載進度:如何?](http://stackoverflow.com/questions/2529558/silverlight-4 -rc-file-upload-with-upload-progress-how-to) – 2012-07-22 10:36:37

回答

3

你可以做到這一點,你使用異步模式的HttpWebRequest - 有一個工作示例(根據MSDN文檔示例代碼)here。簡要說明:

這裏有一個小贏窗體客戶端, 允許你從服務器下載一個文件 ,使用HTTP或FTP 。它顯示下載進度,並且 顯示平均傳輸速率,在 kb/sec。它還演示瞭如何使用HttpWebRequest和 在System.Net中的FtpWebRequest類到 做文件下載。

-2

您必須異步調用它才能更新上載/下載的進度。

HttpWebRequest的有像

public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state); 
public override IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state); 

方法接受異步回調。

+0

downvote ??做什麼的??? – RameshVel 2010-10-13 14:22:59

+1

謝謝,但你能詳細說明你將如何做到這一點。 – 2010-10-14 12:19:40

+2

回調是當請求完成時。通過回調沒有進展(除了100% - 這可能*不*爲什麼OP問這個問題)。這可能會解釋downvote – 2013-03-22 20:27:47

-1

只要你設置任何HttpWebRequest.ContentLength或HttpWebRequest.SendChunked調用GetRequestStream之前,你發送的數據將被髮送到服務器與每個調用流。[開始]寫。如果您以小塊形式撰寫文件,您可以瞭解您有多遠。

+0

實際上,即使您設置SendChunked,客戶端也會緩存數據。我用一個18M的文件試了這個,並在幾秒鐘內發送完畢,然後實際傳輸花費了幾分鐘。 – Charles 2014-09-13 19:26:50