WebClient下载不完整的文件

时间:2012-08-09 10:58:15

标签: vb.net webclient

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

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)

知道这里出了什么问题吗?

干杯

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

注意:完成后不要忘记丢弃webclient。

注意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

答案 2 :(得分:0)

托管该文件的网站或该网站如何处理GET请求可能会出现问题。下载我从DropBox共享的URI时遇到了同样的问题。该文件大约3 MB,但只下载了前112 KB。当我从Screencast.com下载相同的文件时,整个文件都被下载了。

答案 3 :(得分:0)

你可能想尝试三件事:

  1. 使用管理员权限运行您的应用程序,因为C驱动器受到保护 Windows 7及更高版本。
  2. 暂时停止您的防病毒程序并尝试重新下载。
  3. 仅在下载完成后处理webClient(在DownloadFileCompleted事件上)

答案 4 :(得分:-1)

文档似乎暗示(两种不同的变体)
Dim client As New WebClient()

Dim client As WebClient