我正在尝试制作一个小程序,通过HTTP在C#中下载文件。 使用WebClient进行基本下载工作正常,但现在我想尝试一下 下载具有多个连接的文件。 到目前为止:
HttpWebRequest HttpRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse HttpResponse = (HttpWebResponse)HttpRequest.GetResponse();
Stream ResponseStream = HttpResponse.GetResponseStream();
FileStream FSChunk = new FileStream(destination, FileMode.OpenOrCreate, FileAccess.Write);
while ((BytesThisRead = ResponseStream.Read(Buffer, 0, (int)BytesPerRead)) != 0)
{
FSChunk.Write(Buffer, 0, BytesThisRead);
TotallyRead += BytesThisRead;
if (TotalReadLength - TotallyRead < buffersize)
BytesPerRead = TotalReadLength - TotallyRead;
}
我可以使用这个ResponseStream下载文件,也可以使用一个ResponseStream分成两部分。我的问题是,WebStreams不可寻找,所以我不能只设置一个阅读的位置。 如何使用不同的Streams同时设法通过HTTP同时下载一个文件(连接,我认为多个成员不能使用一个流)。 我在这里阅读了很多文章并用谷歌搜索了几个小时,但我找不到解决方案。 Chunked传输编码是否与此主题有关?
最诚挚的问候, 戴蒙
答案 0 :(得分:4)
您需要在请求上调用AddRange
- 这会在content range
中设置http header
,告诉服务器您要求的文件部分。