我如何从vb.net中的互联网下载文件(zip)

时间:2011-02-22 19:59:13

标签: vb.net visual-studio-express

专家。我正在尝试创建一个简单的文件下载器(使用GUI)。我对Vb.net很新,我在我拥有的书中没有找到任何有用的信息。野外的所有教程都让我更加沮丧,因为我使用的片段在大多数情况下是不同的类。 所以我有一些基本问题:

  • 我应该使用什么? HttpWebRequest/HttpWebResponseFileWebRequest/FileWebResponse
  • 如何将ResponseStream保存到文件?
  • 是否可以使用ResponseStream定义File(FileInfo)类的类型以获取基本文件信息(大小,扩展名等)
      如果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。对不起英文不好

2 个答案:

答案 0 :(得分:2)

如果您希望在没有进度条或任何跟踪下载速度,估计剩余时间等的情况下快速完成,那么我建议WebClient.DownloadFileAsync or WebClient.DownloadFile。您应该能够使用WebClient.ResponseHeaders["content-type"]读取mime类型,然后相应地重命名该文件。

答案 1 :(得分: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