试图循环直接下载链接列表;第一个文件下载,但第二个文件被卡在0字节,永远不会完成(C#)

时间:2016-09-12 10:17:47

标签: c# download webclient

我尝试使用以下代码浏览直接下载链接列表。代码运行并下载第一个文件,因为它移动到第二个文件(列表中的第二个链接),它正确地创建新文件并启动下载,但停止在0字节并且不继续。

我尝试使用断点和类似的方法,并且所有数据看起来都是正确的。此外,我确认可以快速连续下载多个文件,而不会出现相关网站的任何问题。

非常感谢任何帮助,反馈或建议!

using (WebClient w = new WebClient())
        {
            w.DownloadFile(new Uri(downloadLinks[0]), _directory + "test");
            w.DownloadFile(new Uri(downloadLinks[1]), _directory + "test1");
            w.DownloadFile(new Uri(downloadLinks[2]), _directory + "test2");
            w.DownloadFile(new Uri(downloadLinks[3]), _directory + "test3");
        }

此外,直接下载,即使用下面的内容,工作正常。

import urllib2
threats = urllib2.urlopen("http://malc0de.com/bl/BOOT")

谢谢!

1 个答案:

答案 0 :(得分:3)

我怀疑问题出在这一行:

w.OpenRead(s);

返回一个你永远不会关闭的Stream。现在你可以关闭它...但是最好使用它,而不是打扰DownloadFile调用:

using (Stream responseStream = w.OpenRead(s))
{
    string content = w.ResponseHeaders["Content-Disposition"];
    string filename = new ContentDisposition(content).FileName;
    using (Stream fileStream = File.Create(filename))
    {
        responseStream.CopyTo(fileStream);
    }
    Console.WriteLine("Downloaded " + filename);
}