如何在C#中下载zip文件?
我使用HTTP GET是下载一个浏览器中的zip文件,像https://example.com/up/DBID/a/rRID/eFID/vVID(没有确切的网址)如何在C#中下载zip文件?
现在,当我尝试了做在C#代码相同的下载(同上GET方法)桌面应用程序下载的zip文件不是有效的存档文件。当我用记事本打开这个文件时,它是一些HTML页面。
我想我没有正确设置标题。我四处寻找示例。我发现了几个wrt上传,但没有看到任何下载。
代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/zip";
try
{
HttpWebResponse res = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default))
{
StreamWriter oWriter = new StreamWriter(@"D:\Downloads\1.zip");
oWriter.Write(sr.ReadToEnd());
oWriter.Close();
}
res.Close();
}
catch (Exception ex)
{
}
这主要是因为您使用StreamWriter : TextWriter
处理二进制Zip文件。 StreamWriter需要文本并应用编码。甚至简单的ASCII编码器也可能试图“修复”它认为无效的行结束符。
您可以取代所有代码:
using (var client = new WebClient())
{
client.DownloadFile("http://something", @"D:\Downloads\1.zip");
}
哦,是的,我可以在那里看到同样的问题。 – 2011-01-22 16:40:37
+1打我 - @Al:我测试了一个zip文件,它工作得很好,你确定文件本身没有损坏吗? – BrokenGlass 2011-01-22 16:45:58
你可以只使用WebClient
为2班轮:
using(WebClient wc = new WebClient())
{
wc.DownloadFile(url, @"D:\Downloads\1.zip");
}
这是一个难以猜测的“它不工作”的问题。发布代码,记录您在十六进制查看器中打开文件时看到的内容。 – 2011-01-22 16:31:04