2011-12-25 71 views
0

有誰知道WebClient.DownloadFileAsync是如何實現的? 我有這幾個問題:WebClient.DownloadFileAsync底層實現

  1. 是從流返回保存在內存中,直到整個文件下載,或者它直接緩衝到一個臨時文件(然後複製到正確的路徑)?或直接進入文件指示?
  2. 編寫一個簡單的WCF REST服務,接聽這些電話將要求如下:

    set response headers - Content-Type: application/octet-stream 
             Content-Length: 3 
             Content-Disposition: Attachment; 
             filename=SomeFileName.jpeg 
    

    ,並返回一個字節[]

我失去了什麼?

+1

您可以通過直接查看[源代碼](http://www.microsoft.com/resources/sharedsource/default.mspx)或使用[許多反彙編程序]之一( http://stackoverflow.com/questions/578883/a-net-disassembler-decompiler)。 – Oded 2011-12-25 12:33:47

+0

戶田! - 不知道那個網站。在那裏試圖找到實際的來源有點失落 - 稍後再深入挖掘。再次感謝 – JanivZ 2011-12-25 12:43:36

+0

Bevakasha ...希望這些幫助。 – Oded 2011-12-25 12:44:07

回答

0
  1. 響應流以區塊形式讀取,這些區塊直接寫入輸出文件流,整個文件不會加載到內存中。
  2. WebClient並不關心服務器發送什麼標題。它讀取響應流並將其保存到輸出文件中。
+0

如果它沒有讀取響應標題conternt-length,它如何在進度更改事件中提供完整的precentage?或總字節接收..等等? – JanivZ 2011-12-25 14:16:41

+0

@JanivZ,它不能。如果沒有Content-Length標題,則不會收到有關進度的通知。 – 2011-12-25 14:21:53

+0

明白了:P謝謝 – JanivZ 2011-12-25 14:39:17