2011-12-02 91 views
4

後2 GB的下載我使用的Web客戶端對象來下載文件,像這樣:的.NET Web客戶端會從S3

strm = Client.OpenRead(url); 
strm.ReadTimeout = 30000; 

bool bFirst = true; 
while ((read = strm.Read(buf, 0, 2000)) > 0) 
{ 
    fout.Write(buf, 0, read); 
} 

其中URL指向一個S3桶。在某些情況下,下載失敗的時間恰好爲2 GB。這是網絡問題,還是我可以在代碼中改變的東西?

任何想法讚賞。

+0

什麼是fout?你如何宣佈它?什麼是失敗簽名? –

+2

我知道IE有2GB的下載限制,有誰知道這是否也適用於WebClient控件? –

+3

2GB是非常可疑的,因爲它是可以用(有符號)32位整數表示的最大值。如果您的代碼或API使用'int'來表示數據大小,這可能是罪魁禍首。 –

回答

6

我相信WebClient會將文件讀入內存,並且您可能會遇到進程大小限制。

你要使用什麼是WebClient.DownloadFile

我相信,這將更好地爲您服務!

+0

+1 Spot on - 雖然DownloadFileAsync會更好,因爲您可以免費獲得分塊事件通知。 – x0n

+1

當你下載2個演唱會時,進度條往往更有禮貌,呃? :) –

+0

不幸的是,這並沒有解決問題。很確定它與網絡有關。不過謝謝。 – ckg