0

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

除了.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

我转到浏览器中的 url 并确保文件确实存在并且没有损坏。url 很好,我可以直接从浏览器中的 url 下载文件并打开文件。

附加信息:

我确实发现了 pdf url 和 docx url 不同的一件事,但我真的认为这与我的问题无关。当我在浏览器中转到 pdf url 时,pdf显示在浏览器中。但是,当我转到 docx url 时,页面没有显示任何内容,但文件的下载会自动开始。我不认为这会有所作为,但仅供参考。

编辑上午 10:38

我刚刚尝试了异步方法。我能够下载 docx 文件并打开它,但它显示为空白 word 文档,这仍然不正确。我从浏览器下载的同一个 docx 文件确实有内容。

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

2 回答 2

0

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

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

于 2013-10-07T14:51:34.990 回答
0

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

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

WebClient 没有因格式不正确(无论出于何种原因)引发错误,而且我的日志文件没有记录我尝试连接的实际 url,所以我没有意识到它做错了事。

无论如何,感谢大家的帮助和评论,帮助我找出问题所在。

于 2013-10-07T15:08:25.657 回答