使用c#代码下载的zip文件无效

时间:2012-09-10 11:57:53

标签: c# c asp.net-mvc webclient-download

我有一个存储一些zip文件的Dot Net MVC服务器。如果单击超链接,我可以成功下载这些zip文件。但是,如果我尝试使用WebClient的DownloadFile下载zip文件,我可以下载zip文件我收到错误“Windows无法打开文件夹,压缩的zip文件夹无效”

服务器端代码:

public FilePathResult DownloadFile(int id)
{      
       string resultsdir = AppDomain.CurrentDomain.BaseDirectory + "Data\\ResultsDir\\" + res.RequestId.ToString();
       string downloadFile = System.IO.Path.GetFileName(res.DownloadPath);
       string zipPath = System.IO.Path.Combine(resultsdir, downloadFile);
       return File(zipPath, "application/zip", downloadFile);
}

客户端我正在使用Webclient下载此文件

WebClient wc = new WebClient();
wc.DownloadFile("http://servername/Results/DownloadFile/853", "localspkgfile.zip");

如果我通过点击浏览器上的超链接下载文件,则文件大小为2.9 MB。但是,使用webclient文件大小为5kb。看起来WebClient无法正确下载文件。任何人都可以建议我下载文件的方法。

2 个答案:

答案 0 :(得分:4)

我不知道您的代码有什么问题,但是您下载的5kb文件几乎肯定是一个HTML错误页面,其中可能包含堆栈跟踪等信息,可以帮助您找出问题所在。将其扩展名更改为.html并在浏览器中将其打开。

答案 1 :(得分:0)

我也有这个问题,但我找到了一个简单的解决方案 我想从" http://sodco.ir/Choobkhat/Update/update.zip"下载此Zip文件 并提取它们。但webClient不能下载它。

我的解决方案:

第1步:从" D:\ update.zip"更改我的FileName到" D:\ update.zi" webClient.DownloadFileAsync("http://sodco.ir/Choobkhat/Update/update.zip", "D:\\update.zi);

它将开始下载,下载完成后:

第2步:将update.zi重命名为update.zi p

File.Move("update.zi", "update.zip");

第3步:提取它们

ZipFile.ExtractToDirectory(Application.StartupPath + "\\update.zip", Application.StartupPath);