如何下载具有多个线程的文件

时间:2010-02-01 02:39:14

标签: c# .net

我需要使用不同的线程从网站下载文件并立即下载文件的不同部分,我知道我可以使用Webclient.downloadfile方法,但它不支持以块的形式下载文件。如果您可以指向教程或给我一个关于如何做到这一点的想法,我将不胜感激。谢谢!

4 个答案:

答案 0 :(得分:3)

另一端的服务器,即提供文件的服务器,也必须支持以块的形式下载。它需要一些方法来指定文件中你想要从哪个字节开始,而不是从第一个开始并发送直到客户端停止接受它们,或者它到达文件的末尾。

假设服务器确实支持它,他们会提供一些关于如何利用它的文档,你肯定会在这里找到帮助将其转化为代码。

答案 1 :(得分:0)

为了躲回雷克斯的答案,没有万无一失的方法可以知道。某些Web服务器将为您提供内容长度,或者某些Web服务器将返回-1的长度。很烦人,我知道..

您最好的选择是指定一个固定范围,并利用一些启发式或分析来确定您的块长度的估计长度。

您还希望在Multipart Downloading in C#上查看类似的SO问题。

答案 2 :(得分:0)

WebClient对象具有“标题”属性,可以让您定义'Range' header以仅询问文件的一部分。

答案 3 :(得分:0)

这里有很多ifs,但是如果你正在下载一个巨大的文本文件,你实际上可以将它分成服务器上的许多文件,并将每个文件的地址返回给客户端(或者使用文件名惯例,只报告许多部分是如何),然后客户端可以启动线程来下载每个部分,然后它可以重新组成一个大的文件。

我不确定你的用例,但是这个特殊情况可能不会让任何事情变得更快,如果这是想法的话。