2010-02-01 60 views
4

我需要下載一個文件從一個網站使用不同的線程和一次下載文件的不同部分,我知道我可以使用Webclient.downloadfile方法,但它不支持下載文件分塊。如果你可以指向一個教程或給我一個想法如何做到這一點,我將不勝感激。謝謝!如何下載一個文件與多線程

回答

0

爲了捎帶雷克斯的答案,沒有傻瓜的方式知道。一些網絡服務器會爲你提供一個內容長度,或者一些網絡服務器將返回-1長度。令人討厭的,我知道..

你最好的辦法是指定一個固定的範圍,並利用一些啓發式或分析來確定隨着時間的推移塊的估計長度。

你也想看看這個類似的SO問題Multipart Downloading in C#

3

另一端的服務器,即提供文件的服務器,也必須支持以塊的形式下載。它需要某種方式來指定要啓動的文件中的哪個字節位置,而不是從第一個位置開始併發送,直到客戶端停止接受它們,或者它到達文件末尾。

假設服務器確實支持,他們會提供一些關於如何使用它的文檔,你一定會在這裏找到幫助,把它變成代碼。

0

WebClient對象有一個'Headers'屬性,它應該讓您定義一個'Range' header來只請求文件的一部分。

0

這裏有很多IFS的,但如果你正在下載,比方說,一個巨大的文本文件,你實際上可以把它拆分成多個文件服務器上,並且每個地址返回給客戶端(或使用文件名約定,只是報告如何許多部分),客戶端可能會啓動線程下載每個部分,然後它可以重新組成一個單一的大文件。

我不確定你的使用情況,但如果這是這個想法,這種特殊情況可能不會使任何事情變得更快。