1

我写的这个方法一周前运行良好,但现在它下载了一个不完整的文件。原始文件将近 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)

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

干杯

4

5 回答 5

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
于 2012-08-09T14:33:10.583 回答
0

托管文件的站点或该站点处理 GET 请求的方式可能存在问题。我在下载从 DropBox 共享的 URI 时遇到了同样的问题。该文件大约 3 MB,但仅下载了前 112 KB。当我从 Screencast.com 下载相同的文件时,整个文件都已下载。

于 2015-01-07T16:19:01.000 回答
0

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

于 2012-08-09T11:06:17.103 回答
0

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

  1. 使用管理员权限运行您的应用程序,因为 C 驱动器在 Windows 7 及更高版本中受到保护。
  2. 暂时停止您的防病毒程序并再次尝试下载。
  3. 仅在下载完成时释放 webClient(在 DownloadFileCompleted 事件中)
于 2015-05-02T19:41:27.340 回答
-1

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

Dim client As WebClient

于 2012-08-09T11:15:24.177 回答