2012-08-09 171 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事件)