各位大牛,
  我在用VB在做一个东西,现需要一个函数能实现如下功能:将指定URL处的文件下载到指定的文件夹里,并能保持原来的类型不变.
参数有三:一个是URL,指定文件的下载地址,一个是本地保存路径,是个文件夹,比如说"D:\TMP",一个是文件类型,比如PDF,DOC
在线等

解决方案 »

  1.   

    不知道MICORSOFT INTERNET CONTR什么的控件能不能实现啊?
      

  2.   

    wincosk可以实现HTTP、FTP的文件下载和上传功能,去MSDN上找winsock的介绍就可以了
      

  3.   

    这个是.NET中Sock类的介绍
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemnetsocketssocketclassclosetopic.asp
      

  4.   

    可以通过Microsoft Internet Transfer Control来实现下载:strURL = "http://www.GreatSite.com/China.exe"
    b() = Inet1.OpenURL(strURL, icByteArray)下载以后通过Microsoft Internet Transfer Control的GetHeader 方法获得文件的标题头的
    Content-type部分,然后根据这个部分来判断文件的类型:
    Private Sub Command1_Click()
        Dim b() As Byte
        
        Inet1.Protocol = icHTTP
        b = Inet1.OpenURL("http://www.applevb.com/sourcecode/filedlg.zip", icByteArray)
        Text2.Text = Inet1.GetHeader("Content-type")
    End Sub
      

  5.   

    一般一个文件的Content-type是由/分割的两部分组成,例如txt/html或者application/zip。你只要获得后面一部分做文件的扩展名就可以了。
      

  6.   

    to  TechnoFantasy(冰儿马甲www.applevb.com)你能不能说的在详细一点,我是要下载PDF文件,并存到'D:\\FCN"下,是不是需要通过循环来读取数据啊
    谢谢
      

  7.   

    下面的代码就是下载一个文件并且根据其扩展名来保存到C盘的,你稍微修改一下就可以了。
    Private Sub Command1_Click()
        Dim b() As Byte
        Dim a() As String
        Dim ext As String
        
        Inet1.Protocol = icHTTP
        b = Inet1.OpenURL("http://www.applevb.com/sourcecode/filedlg.zip", icByteArray)
        a = Split(Inet1.GetHeader("Content-type"), "/")
        ext = a(UBound(a))
        
        Open "C:\China." & ext For Binary Access _
        Write As #1
        Put #1, , b()
        Close #1End Sub
      

  8.   

    everybody,show time!!我提供两个URL:http://www.wgqqh.com/shhgs/book/chap4.pdf和http://www.wgqqh.com/shhgs/book/tij3.chm
    小弟实在功力有限,请各位高手写出代码,将其下载到"D:\\TMP"中,不胜感激,第一个通过的200分
      

  9.   

    Private Sub Command1_Click()
        Dim b() As Byte
        Dim a() As String
        Dim ext As String
        
        Inet1.Protocol = icHTTP
        b = Inet1.OpenURL("http://www.wgqqh.com/shhgs/book/chap4.pdf", icByteArray)
        a = Split(Inet1.GetHeader("Content-type"), "/")
        ext = a(UBound(a))
        
        Open "d:\tmp\China." & ext For Binary Access _
        Write As #1
        Put #1, , b()
        Close #1End Sub
      

  10.   

    其实既然你知道下载的文件名的话,用下面的代码更好:Private Sub Command1_Click()
        Dim b() As Byte
        Dim a() As String
        Dim ext As String
        
        Inet1.Protocol = icHTTP
        b = Inet1.OpenURL("http://www.wgqqh.com/shhgs/book/chap4.pdf", icByteArray)
        a = Split("http://www.wgqqh.com/shhgs/book/chap4.pdf", "/")
        ext = a(UBound(a))
        
        Open "d:\tmp\" & ext For Binary Access _
        Write As #1
        Put #1, , b()
        Close #1
        
        MsgBox "OK"
    End Sub
      

  11.   

    马甲哥,一个小问题:
    我的内部URL是http://202.120.146.5/KNS50/download.aspx?filename=SOCI0502.TJYJ200501008&tablename=CJFD2005&dflag=pdfdown,这种格式的好象有点问题.
    我改成这个样子
    Dim b() As Byte
        Dim a() As String
        Dim ext As String
        
        Inet1.Protocol = icHTTP
        b = Inet1.OpenURL(DownUrl, icByteArray)
        a = Split(DownUrl, "/")
        ext = a(UBound(a))
        Dim loc As String
        loc = "d:\tmp\" & Trim(name) & ".pdf"   //NAME是这个文件的名字,我已解析出来.
        Open loc For Binary Access Write As #1
        Put #1, , b()
        Close #1
      

  12.   

    如果你不知道文件名称的话,就需要通过GetHeader获得文件的类型,然后文件名就需要你自己起了。
      

  13.   

    不是 这个样子的,
    我需要先登陆一下,然后才有权限下载.http://202.120.146.5/KNS50/download.aspx?filename=SOCI0502.TJYJ200501008&tablename=CJFD2005&dflag=pdfdown里看不出文件类型,我用GETHEADERS,获取为空,同时也不能下载啊
      

  14.   

    再顶一下
    TechnoFantasy,
    因为我登陆的时候,要输入用户名和密码,然后才能下载.
    那现在我直接OpenUrl(url,icByteArray)是不行的
    是不是要用 inet1.url ,Inet1.username,Inet1.password 三个属性啊?
    怎么样保持这个session啊?
    各位大哥帮忙啊