2011-02-22 50 views
1

專家。我正在嘗試創建一個簡單的文件下載器(使用GUI)。我對Vb.net相當陌生,在我自己的書中沒有找到有關這方面的有用信息。在野外的所有教程讓我更加沮喪,因爲我使用的片段在大多數情況下是不同的類。 所以我有一些基本的問題:我如何從網上下載一個文件(ZIP)在vb.net

  • 我應該使用什麼? HttpWebRequest/HttpWebResponseFileWebRequest/FileWebResponse
  • 我如何保存ResponseStream到一個文件?
  • 是否有可能使用ResponseStream定義文件類型(FileInfo的)類,以獲得基本的文件信息(大小,擴展名等)
    • 是一般neccessary,如果GetResponse().headers給你最該信息的 ?

我的代碼,它很爛,因爲我不知道該如何實現節能....

Private Sub btn_downloader_Click(ByVal sender...) Handles btn_downloader.Click 
    'e.g http://codeigniter.com/download.php' 
    Dim fileUrl As String = txtBox_url.Text 
    Dim webUri = New Uri(fileUrl) 
    Dim wReq As HttpWebRequest = WebRequest.Create(webUri) 
    Dim wRes As HttpWebResponse = wReq.GetResponse() 
    Dim resUri As Uri = wRes.ResponseUri 
    'to ckeck if http://codeigniter.com/download.php gives http://codeigniter.com/download_files/reactor/CodeIgniter_2.0.0.zip and it does!' 
    Dim resStream As Stream = wRes.GetResponseStream() 

現在我必須以某種方式使用的Stream方法一撇該文件(在這個階段只作爲一個Stream),但不知道如何。 我看到這個在教程

resStream.Read(buffer, offset, count) 

,但我不知道它是什麼的緩衝區和什麼。我應該設置一些靜態值還是動態的,它們會影響Stream-data?

需要幫助!

P.S.對不起,我英語不好

+0

而不是道歉的‘英語不好,’你爲什麼不清理它最好的,你可以嗎? – 2011-02-22 20:01:26

+0

我已經做了。我沒有人可以檢查我的文本是拼寫還是語法錯誤。所以我張貼它,因爲它似乎沒問題......至少對我來說。我很抱歉,我很確定這不是100%正確,我犯了一些錯誤。 – 2011-02-22 20:10:33

回答

2

如果您正在尋找快速做沒有跟蹤的下載速度,左預計時間等進度條或任何東西,那麼我建議WebClient.DownloadFileAsync or WebClient.DownloadFile。您應該能夠使用WebClient.ResponseHeaders["content-type"]讀取MIME類型,然後相應地重命名文件。

0

這是不完整的,但是可以讓你在正確的方向。 「位置是在哪裏保存文件..

Public Function DownloadFile(ByVal URL As String, ByVal Location As String) As Boolean 
    Try 
     Dim WC As New WebClient 
     WC.DownloadFile(URL, Location) 
     Return True 
    Catch ex As Exception 
     Return False 
    End Try 
End Function