WebClient.DownloadFile文件损坏

时间:2013-10-07 14:14:21

标签: c# file download webclient

我正在尝试直接从网址列表中下载文件。

除了 .docx 之外,我能够成功下载大多数文件。我能够下载 .docx 文件,但是当我尝试打开它时,错误消息显示"The file is corrupt and cannot be opened",当我尝试使用Microsoft Word修复它时,我收到了另一个错误消息说"Microsoft Office cannot open this file because some parts are missing or invalid"。下载 pdf 文件时,我没有任何问题。

我的代码很简单,看起来像这样:

WebClient webClient = new WebClient();
webClient.DownloadFile("http://somehost/somefile.docx", "C:\\somefolder\\somefile.docx");
webClient.Dispose(); //I added this line just to see if it will fix the problem but no it didn't

我访问了浏览器中的网址,确保文件确实存在并且没有损坏。网址很好,我可以直接从浏览器的网址下载文件,然后打开文件。

其他信息:

我确实找到了一个与pdf url和docx url不同的东西,但我真的不认为它与我的问题有任何关系。当我在浏览器中转到pdf网址时,浏览器中会显示 pdf 。但是,当我转到docx URL时,页面没有显示任何内容,但文件的下载会自动启动。我不认为这会有所作为,只是仅供参考。

编辑10:38 AM

我刚试过Async方法。我能够下载docx文件并打开它,但它看起来像一个空白的word文档,但仍然不正确。我从浏览器下载的同一个docx文件确实有内容。

webClient.DownloadFileAsync(new Uri("http://somehost/somefile.docx"),"C:\\somefolder\\somefile.docx");

2 个答案:

答案 0 :(得分:0)

DownloadFileAsync在后台下载文件,您的应用程序可能会在下载完成之前终止。

您应该等待DownloadFileCompleted事件,或使用将等待文件下载的DownloadFile方法。

答案 1 :(得分:0)

感谢大家的帮助,我真的很感激。

我意识到问题实际上是我没有正确连接网址。是的,我犯了一个愚蠢的错误......

WebClient没有因格式错误(无论出于什么原因)而抛出错误,而且我的日志文件没有记录我尝试连接的实际网址,所以我没有意识到它做错了。< / p>

无论如何,谢谢大家的帮助和评论,帮助我弄清问题是什么。