2010-10-14 86 views
3

我正在寫一個C#實用程序,我需要能夠從URL下載和保存文件。如何在WinForm應用程序中從網上下載文件

我的代碼正在從Web服務調用中獲取URL,但是我無法找到如何開始下載並將數據保存到磁盤文件的簡單示例。

有沒有人有這方面的一個很好的例子,或者可以提供一個例子嗎?

謝謝!

編輯 - 我應該提到這些文件的大小爲3到4 GB。所以如果對這個尺寸的文件有特殊的考慮,我會很感激任何建議。

+1

回覆:大文件 - 特別的問題是,你將不得不實施某種恢復... – 2010-10-14 22:51:15

回答

4

WebClient.DownloadData,該規範包含一個小樣本。使用WebRequest.GetResponseStream並按塊保存數據塊可能更有效,但您必須自己準備WebRequest

更新

如果你要下載的文件3-4GB,那麼你必須做很多比.net框架提供了什麼等等。因爲WebClient將內容作爲一個整體字節[]返回,所以它是非常不合時宜的。即使假設您的VAS(虛擬地址空間)具有連續4GB在這些下載上刻錄,.Net不能分配大於2Gb(在x64上)的任何。所以你必須使用流,如在GetResponseStream()中。

其次,您必須在請求中實現HTTP範圍單元,如HTTP/1.1 section 3.12。您的請求必須包含Content-Range標題才能夠恢復受損下載。當然,你的目標服務器將不得不接受和識別這些頭文件,並且可能會用少數服務器做的事件accept-ranges來響應。

你的盤子滿了,下載4Gb不過是微不足道的。

1

既然你有龐大的文件,對於某種聯繫的復甦做好準備。

無論您從http(WebClient,TcpStream,...)中找到什麼方法,都應該從頭開始編寫恢復代碼。這應該是重點。

爲此,必須檢查從GetResponseStream()返回的流是否支持Seek()

相關問題