C#从URL下载文件

时间:2015-09-22 13:34:15

标签: c# file download

任何人都可以告诉我如何从该URL下载我的C#程序中的文件: http://www.cryptopro.ru/products/cades/plugin/get_2_0

我尝试使用WebClient.DownloadFile,但我只获取html页面而不是文件。

5 个答案:

答案 0 :(得分:11)

如果没有合法的U / A字符串,请查看Fiddler请求失败,所以:

WebClient wb = new WebClient();
wb.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.33 Safari/537.36");
wb.DownloadFile("http://www.cryptopro.ru/products/cades/plugin/get_2_0/cadeplugin.exe", "c:\\xxx\\xxx.exe");

答案 1 :(得分:4)

我相信这会成功。

WebClient wb = new WebClient();
wb.DownloadFile("http://www.cryptopro.ru/products/cades/plugin/get_2_0/cadeplugin.exe","file.exe");

答案 2 :(得分:1)

如果您需要知道下载状态或使用凭据才能提出请求,我建议您使用此解决方案:

WebClient client = new WebClient();
Uri ur = new Uri("http://remoteserver.do/images/img.jpg");
client.Credentials = new NetworkCredential("username", "password");
client.DownloadProgressChanged += WebClientDownloadProgressChanged;
client.DownloadDataCompleted += WebClientDownloadCompleted;
client.DownloadFileAsync(ur, @"C:\path\newImage.jpg");

她就是回调的实现:

void WebClientDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    Console.WriteLine("Download status: {0}%.", e.ProgressPercentage);
}

void WebClientDownloadCompleted(object sender, DownloadDataCompletedEventArgs e)
{
    Console.WriteLine("Download finished!");
}

答案 3 :(得分:0)

尝试WebClient.DownloadData

您会以byte[]的形式得到回复,然后您可以随心所欲地做任何事情。

答案 4 :(得分:0)

有时服务器不允许您使用脚本/代码下载文件。为了解决这个问题,您需要设置用户代理标头来欺骗请求来自浏览器的服务器。使用以下代码,它的工作原理。测试好了

 var webClient=new WebClient();
 webClient.Headers["User-Agent"] =
                "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36";
 webClient.DownloadFile("the url","path to downloaded file");

这将按预期工作,您可以下载文件。