2012-08-09 137 views
1

我写的这种方法在一周前工作正常,但现在它下载了一个不完整的文件。原始文件接近10mb,但正在下载的文件为2k。我的代码基本上是这样的WebClient下载不完整的文件

Dim URL as string = "http://www.cqc.org.uk/sites/default/files/cqc_locations_export.csv" 
Dim path as string = "C:\temp"   
Dim webClient As New WebClient 
webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)") 
webClient.DownloadFile(URL, path) 

任何想法这里怎么了?

干杯

回答

0

这不是我的领域,但你可能会丢失文件的大小,如果是二进制,字符编码和其他标题数据。另外,这2k文件可能是文件或元数据的一部分。

-1

该文档似乎表明无论是(两个不同的变体)
昏暗的客户端作为新的Web客户端()

昏暗的客户端作为Web客户端

+0

@ user1460625都是(我)的选择错了吗?或者所有三个(或更多)全部正确? – 2012-08-09 14:29:30

+0

你能解释一下为什么你认为这个或那个方法会对发布的问题产生影响吗? – 2012-08-09 14:35:44

+0

一般来说,使用MS技术总是最好遵循他们的规则,因为您永远不会知道其他选项可能具有的攻击门和副作用。如果所有选项都是正确的,那么你怎么猜测这可能会产生什么副作用。 BTW:c:\ temp也可能是一个完整且有效的文件路径 - 其中名为temp(不带扩展名)的文件位于C:\根目录中。 – 2012-08-09 15:26:02

0

的第二个参数DownloadFile需要一个完整的文件名不只是一个路径(并且C:\驱动器的根在Windows 7上受到保护,因此如果您尝试在此处写入,该方法可能会引发异常)

注意:请勿忘记在完成后处理web客户端。

注2:我建议你应该避免使用.NET类名以外的名称命名冲突。不要忘了VB的情况下敏感(不像C#)

下工作正常,我:

Dim URL As String = "http://www.cqc.org.uk/sites/default/files/cqc_locations_export.csv" 
Dim filename As String = "C:\temp\temp.csv" 
Using wc As New WebClient 
    wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)") 
    wc.DownloadFile(URL, filename) 
End Using 
0

这可能是与网站的问题,即托管文件,或如何该网站处理GET请求。我有同样的问题下载我从DropBox分享的URI。该文件大约3 MB,但仅下载了大约第一个112 KB。当我从Screencast.com下载相同的文件时,整个文件都被下载了。

0

在地面上,你可能想尝试的三件事:

  1. 运行具有管理员权限的应用程序C盘在 受保护的Windows 7及以上。
  2. 临时停止您的防病毒程序并尝试再次下载。
  3. 只有处理Web客户端下载完成后(在DownloadFileCompleted事件)