【发布时间】:2013-10-07 14:14:20
【问题描述】:
我正在尝试直接从 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,并确保文件确实存在并且没有损坏。网址很好,我可以直接从浏览器中的网址下载文件并打开文件。
其他信息:
我确实发现 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");
【问题讨论】:
-
文件是否公开?您是否需要特殊凭据才能访问它?饼干等?
-
@Arran 文件都是公开的,这是一个免费的在线存档站点
-
不直接相关,但不是手动调用
Dispose,而是查看using关键字。这是更好的做法! -
@GeraldVersluis 我最初没有该行,我添加了它以查看是否会以某种方式成功下载文件但它没有(就像我所期望的那样)。我也只是尝试过使用关键字,但该方法也不起作用。
-
您能否提供您正在下载的文件的实际地址?我在一个测试站点上尝试了一个 .docx 文件,它运行良好。
标签: c# file download webclient