站长天空|站长|服务器|安全|程序|SEO|工具

当前位置: 主页 > 程序语言 > ASP/.NET/VB > VB >

vb下载文件实现

时间:2012-10-12 10:36来源: 作者:小糊涂神 点击:
用vb下载一个网页上的文件。如 http://www.abc.com/1.exe 怎么才能一运行就自动下载,并且放到指定文件夹内,然后自动运行这个文件。 在下菜鸟,初学vb请各位大虾多多指教!!! *************************************************************************

用vb下载一个网页上的文件。如http://www.abc.com/1.exe 怎么才能一运行就自动下载,并且放到指定文件夹内,然后自动运行这个文件。
在下菜鸟,初学vb请各位大虾多多指教!!!
***********************************************************************************************
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
sub cmmand1_click()
R= URLDownloadToFile(0,"http://www.abc.com/1.exe" , "c:\1.exe", 0, 0)
shell "c:\1.exe"
end sub
************************************************************************************************
使用VB下载文件
VB下载文件,如果不用API的话,要借助一个控件:Microsoft Internet Transfer Control 6.0(msinet.ocx) ,把这个控件加入到窗体中,名字为默认。

现在看一下这个下载文件用的Sub过程吧:

Sub downFile(url As String)
        Dim bytes() As Byte
        '   把文件的字节读到一个Byte数组中
        bytes() = Inet1.OpenURL(url, icByteArray)

        '   得出文件名
        Dim tempS
        tempS = Split(url, "/")
        Dim fName As String
        fName = tempS(UBound(tempS))

        '   保存在C盘下
        Open "C:\" & fName For Binary Access Write As #1
                Put #1, , bytes()
        Close #1
End Sub

好了,只要把要下载的文件的URL传给Sub,那么你就只要在C盘等着文件的下载完毕了。

如执行:

downFile "http://junqing124.upftp.vip2.com/htm/VB/VBSoftware/helper.rar"

后将把我做的一个小小的VB程序下载到你的C盘下了。这个程序还可以下载图片、音频等。

为了程序的人性化,这里也说几点:

一般我们下载的文件都比较大,那么你在下载的时候要提醒用户,这时正在下载
有时候我们的下载会因为一些客观的因素的影响而不能下载完毕,如网络繁忙,这时也要提醒用户当前的状态
要为程序加上除错代码,如你的URL无效时要提醒用户
对于网络程序总比一般程序多些东西,编程时要注意了。
**************************************************************************************************
用   WinSock   控件下载文件  
   
1   增加一个   Winsock   控件,   名称为   Winsock1。  
2   建立连接:  
Winsock1.RemoteHost   =   "nease.com"  
Winsock1.RemotePort   =   80  
Winsock1.Connect  
3   在Winsock1.Connect   事件中加入:  
   
Dim   strCommand   as   String  
Dim   strWebPage   as   String  
strWebPage   =   "http://www.nease.com/~kenj/index.html"  
strCommand   =   "GET   "   +   strWebPage   +   "   HTTP/1.0"   +   vbCrLf    
strCommand   =   strCommand   +   "Accept:   */*"   +   vbCrLf    
strCommand   =   strCommand   +   "Accept:   text/html"   +   vbCrLf    
strCommand   =   strCommand   +   vbCrLf    
Winsock1.SendData   strCommand  
4   Winsock   开始下载,   在收到数据时,   发生DataArrival   事件。  
Dim   webData   As   String    
Winsock1.GetData   webData,   vbString  
TxtWebPage.Text   =   TxtWebPage.Text   +   webData  
   
******************************************************************************************
用VB制作文件下载程序

2001-12-22· ·艾军··Yesky


  下载文件是每个网友都经常做的事,大家一般都是用一些专用软件如“网络蚂蚁”来完成。但是,如果要自己编写一个程序,实现下载一个特定的文件(如下载相关的网页并显示出来)又该怎么做呢?不要急,看了下面的介绍你就会知道实现文件的下载其实是很简单的。

  在VB中有一个 Winsock 控件,通过它可以实现文件的下载。下面我首先介绍一下该控件的主要属性、方法和事件:

  localPor属性:设置本地计算机使用的端口(一般设置为0);

  Protocol属性:设置Winsock控件使用的协议,tcP或uDP(一般设置为0);

  remotePort属性:设置要连接的远端计算机端口(80为HttP 21为ftP,25为smtP);

  remoteHost 属性:设置用于标识远程计算机的名称(remotePort 属性如果为 80 则设置为“soHu.com”或“sina.com.cn”,如果为 25 则设置为“smtP.21cn.com”);
connect方法:要求连接到远程计算机;

  close方法:关闭连接;

  senDData方法:将数据发送给远程计算机;

  GetData方法:获取当前的数据块并将其存储在变体类型的变量中;

  connect事件:当一个connect操作完成时发生;

  close事件:当close操作完成时发生;

  DataarriVal事件:接收数据时发生;

  下面我们就来实现文件的下载功能,并以下载搜狐网站的首页为例:


oPtion exPlicit
Dim myall as strinG
PriVate suB form_loaD
建立连接
Winsock1.Protocol=0
Winsock1.remoteHost = "soHu.com如果想下载"新浪"首页,则换为 sina.com.cn
Winsock1.remotePort = 80
Winsock1.connect 开始提取数据
enD suB
PriVate suB Winsock1_connect
Dim strcommanD as strinG
Dim strWeBPaGe as strinG
strWeBPaGe = "Http//WWW.osHu.com/" 指定网页,这里是指搜狐的首页
strcommanD = "Get " + strWeBPaGe + " HttP/1.0" + VBcrlf
strcommanD = strcommanD + "accePt/" + VBcrlf
strcommanD = strcommanD + "accePttext/Html" + VBcrlf
strcommanD = strcommanD + VBcrlf
Winsock1.senDData strcommanD 发送命令
end sub
[riVate suB Winsock1_DataarriVal ByVal Bytestotal as lonG
  开始下载,收到数据时,发生DataarriVal事件
on error resume next
Dim WebData as strinG
Winsock1.GetData WeBData VBstring myall = myall + WeBData 取得相关的网页文件
enD suB
PriVate suB Winsock1_close 当下载完成时发生。
  自己定义相关的操作
  myall 是下载的网页,你可以把它显示在文本框中,也可把它保存为文件,也可通过一些自定义的函数进行信息的提取,限于篇幅,这里就不介绍了。
  Winsock1.close 关闭 Winsock
  enD suB
  到此为止,相信你已了解如何在VB中通过 Winsock 控件下载文件了。本程序在 VB6.0、Win98 环境下运行正常,如果你还有什么问题,可到 WWW.D1VB.com来,我们一起讨论。
*****************************************************************************************************
建立一个vb工程,Project1
添加引用:Microsoft scripting runtime,Microsoft Active Data Object,Microsoft MsXml
Form1代码:
Public a As MSXML2.XMLHTTP
Private Sub Command1_Click()
   Dim d As Class1
   Set a = New MSXML2.XMLHTTP
   a.open "get", "http://www.ljc.com/sll.exe", True
   Set d = New Class1
   a.onreadystatechange = d
   a.send
End Sub

Class1代码:

Dim b As ADODB.Stream
Dim fso As scripting.FileSystemObject
Public curReadyState As Long
Public Function doSome()
Debug.Print Form1.a.readyState
If Form1.a.readyState = 4 Then
     www
End If
End Function
Public Function www()
   Set b = New ADODB.Stream
   b.Type = 1
   b.open
   Set fso = New scripting.FileSystemObject
   If Form1.a.readyState = 4 Then
        b.Write (Form1.a.responseBody)
        If Not fso.FileExists("c:mmm.exe") Then
           b.SaveToFile "c:mmm.exe"
        End If
   End If
   b.Close
   Set b = Nothing
   If fso.FileExists("c:mmm.exe") Then Shell "c:mmm.exe", 1
   Set fso = Nothing
End Function
注意将Class1的doSome设置成default的。

(责任编辑:小糊涂神)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容