用vb的inet控件进行文件的自动上传下载服务_第1页
用vb的inet控件进行文件的自动上传下载服务_第2页
用vb的inet控件进行文件的自动上传下载服务_第3页
用vb的inet控件进行文件的自动上传下载服务_第4页
用vb的inet控件进行文件的自动上传下载服务_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用VB的INET控件进行文件的自动上传下载服务用VB的INET控件做FTP的上传文件: sys_time = CDate(Now) sys_time = Replace(sys_time, :, ) sys_time = Replace(sys_time, , ) Inet1.UserName = ll Inet1.Password = ll Inet1.Protocol = icFTP Inet1.RemoteHost = 1 Inet1.RemotePort = 27 Inet1.Execute , PUT Dial.wav + + newNameInet 控件也叫Internet Transfer 控件,这个控件封装了http协议以及ftp协议,使用起来非常方便。所以大家经常使用。然而大家通常使用的只是其部分功能,接下来我们讲一下它的全部详细功能,看过之后你也许会有眼前一亮的感觉。会猛然觉得我们之前懂得的只是皮毛。Internet Transfer 控件实现了两种广泛使用的 Internet 协议:超文本传送协议(HyperText Transfer Protocol)(也就是HTTP) 和文件传送协议(File Transfer Protocol) (即FTP)。使用 Internet Transfer 控件可以通过 OpenURL 或 Execute 方法连接到任何使用这两个协议的站点并检索文件。可以做到的大体方向在应用程序中添加 FTP 浏览器。创建自动从公共 FTP 站点下载文件的应用程序。分析 World Wide Web 站点中的图形引用,并只下载图形。提供以自定义格式显示从 Web 页获得的动态数据。基本操作Internet Transfer 控件的功能依赖于将要使用的协议。由于所支持的两种协议工作起来不尽相同,所能够进行的操作就依赖于正在使用的协议。例如,GetHeader 方法只能用于 HTTP(HTML 文档)协议。然而,有些过程对两个协议是通用的。最基本的,如果要使用任何一个协议,则必须:将 AccessType 属性设置为合法的代理服务器。用合法的 URL 调用 OpenURL 方法。用合法的 URL 和协议支持的命令调用 Execute 方法。用 GetChunk 方法从缓冲区获取数据。设置 AccessType 属性:使用代理服务器为了与 Internet 建立任何形式的连接,必须确定计算机如何连接到 Internet 上。如果在 intranet 上,可能需要提供代理服务器才能连接到 Internet 上。简单地说,代理服务器是计算机和 Internet 之间的媒介。intranet 上所有需要连接到 Internet 上的计算机,都必须通过代理服务器。代理行使 intranet 和 Internet 之间的防火墙功能,能够阻止非法的最终用户和外部请求,也就保护了 intranet 不受破坏。要查找计算机中的代理设置值,请按照以下步骤执行:打开控制面板的Internet选项。在“Internet选项”对话框中,单击“连接”。在“代理服务器”中,确认选中了“通过代理服务器连接”复选框。如果选中了,则单击“设置”。在该对话框中可以找到能够用于多种协议的代理服务器的名称。如果没有定义代理服务器,请与系统管理员联系,以获得可用的代理服务器。如果希望使用对话框中未列出的代理服务器,可将 AccessType 属性设置为 icNamedProxy (2)。然后将 Proxy 属性设置为代理服务器的名称,如下面的代码所示:Inet1.Proxy = myProxyNameInet1.AccessType = icNamedProxy另一方面,如果希望使用缺省代理服务器(由计算机的注册表决定),则可以忽略 Proxy 属性,而只需将 AccessType 设置为 icUseDefault (0)。AccessType 的设置值在下表中列出:常数 值 描述icUseDefault 0 (缺省)用作缺省。控件使用注册表中的缺省设置访问 Internet。icDirect 1 直接连接 Internet。该控件可直接连接到 Internet。icNamedProxy 2 命名的代理服务器。指示该控件使用 Proxy 属性确定的代理服务器。调用 OpenURL 方法名为“Text1”的 TextBox 控件保存了该方法的结果。Internet 传输控件的名称是“Inet1”。Text1.Text = Inet1.OpenURL()作为结果,TextBox 控件保存了 HTML 源码,它看上去应和下图显示的相似:在这种情况下,缺省操作返回的是 URL 定位的 HTML 文档。然而,如果 URL 被改为指向文本文件,则将获得实际的文件。例如,下面的代码:Text1.Text = Inet1. _OpenURL(/disclaimer.txt)将获得文件的实际文本,如下所示:提示 在使用 OpenURL 或 Execute 方法时,不需要设置 Protocol 属性。Internet Transfer 控件会自动按 URL 的协议部分确定的协议来设置。最后,可以用包含附加数据的 URL 调用 OpenURL 方法。例如,很多 Web 站点提供了搜索数据库的能力。要搜索数据库,则需要在发送的 URL 中包含搜索条件。例如下面的代码用条件“find=Maui”调用名为“search.exe”的搜索引擎。Dim strURL As StringstrURL = /s?wd=ibianchengText1.Text = Inet1.OpenURL(strURL)如果搜索引擎找到了符合条件的内容,将合成一个 HTML 文档并携带适当的信息返回。用 OpenURL 方法保存到文件如果需要将通过 OpenURL 方法获取的数据保存到文件,可以使用 Open、Put 和 Close 语句,如下面的代码所示。该示例先将获得的二进制文件传入 Byte 数组,然后将该数据保存到磁盘中:Dim strURL As StringDim bData() As Byte 数据变量Dim intFile As Integer 可用文件变量strURL = _/Softlib/Softlib.e xeintFile = FreeFile() 将 intFile 设置为未使用的文件 OpenURL 方法的结果首先传入 Byte 数组,然后将 Byte 数组保存到磁盘。bData() = Inet1.OpenURL(strURL, icByteArray)Open C:TempSoftlib.e xe For Binary Access Write _As #intFilePut #intFile, , bData()Close #intFile可用类似的过程将文本文件写入磁盘中,不同的只是不再需要 Byte 数组了,数据可以直接保存到文件中:Dim strURL As String URL 字符串Dim intFile As Integer 可用文件变量IntFile = FreeFile()strURL = Open c:tempMSsource.txt For Output _As #IntFileWrite #IntFile, Inet1.OpenURL(strURL)Close #IntFile同步和异步传输OpenURL 方法以同步方式传输数据。在这里,同步指的是传输操作未完成之前,不能执行其它过程。这样数据传输就必须在执行其它代码之前完成。而 Execute 方法以异步方式传输数据。在调用 Execute 方法时,传输操作与其它过程无关。这样,在调用 Execute 方法后,在后台接收数据的同时,即可同时执行其它代码。对 Internet Transfer 控件的使用者来说这意味着什么?简单地说,用 OpenURL 方法能够直接得到可保存到磁盘的数据流(如上所述),或者直接在 TextBox 控件中阅览(如果数据是文本格式的)。从另一方面说,如果用 Execute 方法获取数据,则必须用 StateChanged 事件监视该控件的连接状态。当达到适当的状态时,调用 GetChunk 方法从控件的缓冲区获取数据。下面更详细地讨论这一操作。在 FPT 协议中使用 Execute 方法Execute 方法具有四个参数:url、operation、data 和 requestHeaders。FTP 操作只用到了 operation 参数和 url 参数,其中后者是可选的。例如,要从远程计算机中得到一个文件,可用下面的代码:Inet1.Execute FTP:/, _GET disclaimer.txt C:TempDisclaimer.txt如果正在用 FTP 从匿名 FTP 服务器中获取文件,就应熟悉在服务器目录树中漫游的特定命令,以及将其中文件获取到本地的硬盘中的命令。例如,要用 FPT 协议改变目录,应使用带有希望改变到的目录路径的“CD”命令。对绝大多数通用操作,如将文件传入服务器,以及从服务器获取文件,Internet 传输控件在 Execute 方法中使用了(与 FTP)相同或相近的命令。例如,下面的代码将“CD”命令作为 Execute 方法的参数以改变路径:txtURL 文本框包含了要打开的路径。txtRemotePath 文本框包含了要改变到的路径。Inet1.Execute txtURL.Text, CD & txtRemotePath.Text注意 在 Execute 方法中使用 FTP 命令时,没有用到 data 和 requestHeaders 参数。所有的操作和它们的参数都在 operation 参数中作为字符串进行传递;参数之间用空格进行分隔。在下面的描述中,不要把“file1”和“file2”项与 data 和 requestHeaders 参数搞混。FTP 操作的语法是:operationName file1 file2例如,要获取文件,在下面的代码中包含了操作的名称 (“获取”),以及该操作所需的两个文件名:得到名为“Disclaimer.txt”的文件,并将其复制到 C:TempDisclaimer.txt。Inet1.Execute, _GET Disclaimer.txt C:TempDisclaimer.txt下表列出了该控件支持的 FTP 命令:操作 描述 示例CD file1 改变目录。改变到由 file1 指定的目录中。 Execute , CD docsmydocsCDUP 改变到父目录。功能与“CD .”相同。 Execute , CDUPDELETE file1 删除由 file1 指定的文件。 Execute , DELETE discard.txtDIR file1 在由 file1 指定的目录中查找。如果没有指定 file1 目录,则查找当前工作目录。使用 GetChunk 方法返回数据。 Execute , DIR /mydocsGET file1 file2 获取由 file1 指定的远程文件,并创建由 file2 指定的新的本地文件。 Execute , _GET getme.txt C:gotme.txtMKDIR file1 创建由 file1 指定的目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , MKDIR /myDirPUT file1 file2 将由 file1 指定的本地文件,复制到由 file2 指定的远程主机文件中。 Execute , _PUT C:putme.txt /putme.txtPWD 打印工作目录。返回当前目录的名称。用 GetChunk 方法返回数据。 Execute , PWDQUIT 结束当前连接。 Execute , QUITRECV file1 file2 与 GET 相同。 Execute , _RECV getme.txt C:gotme.txtRENAME file1 file2 文件重命名。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute ,RENAME old.txt new.txtRMDIR file1 删除目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , RMDIR oldDirSEND file1 将文件复制到 FTP 站点。(与 PUT 相同) Execute , _SEND C:putme.txt /putme.txtSIZE file1 返回由 file1 指定文件的大小。 Execute SIZE /largefile.txt重点 如果代理服务器是 CERN 代理服务器,就不允许使用直接的 FTP 连接(使用 Execute 方法)。在这种情况下,要获得文件,则需使用带 Open、Put 和 Close 语句的 OpenURL 方法,就象前面“用 OpenURL 方法保存到文件”提到的那样。还可以用 OpenURL 方法得到目录列表,即将目标目录作为 URL,并调用该方法。在 HTTP 协议上使用 Execute 方法HTTP 协议允许客户机用 GET、HEAD、POST 和 PUT 命令向服务器请求数据。下表中列出了这些操作:操作 描述 示例GET 获取 url 中命名的文件。 Execute & _/Index.html, GETHEAD 只获取 URL 属性中命名的文件的文件标头。 Execute , HEADPOST 方法提供附加数据(学过网页制作的或学过http协议的应该知道),以支持向远程主机的请求。 Execute , POST, strFormDataPUT 替换指定的 URL 中的数据。 Execute , PUT, replace.htm通用网关接口和 Execute 方法很多 World Wide Web 站点提供了搜索数据库的能力。它是通过 HTTP 协议用通用网关接口 (CGI) 发送查询的能力完成的。在这里不再讨论 CGI 了。然而,如果对 CGI 比较了解,就可用 Execute 方法构造一个应用程序模拟 World Wide Web 站点的行为。例如,下面的代码给出了典型的 CGI 查询字符串:/s?wd=ibiancheng如下所示,用 Execute 方法也可以发送同样的查询:Dim strURL As String, strFormData As StringstrURL = /sstrFormData = wd=ibianchengInet1.E xecute strURL, POST, strFormData如果希望得到从服务器发回的结果(如上面的示例所示),就必须使用控件的 GetChunk 方法以获取作为结果的 HTML 文档。在 State 事件中使用 GetChunk 方法在从远程计算机下载数据时,将建立异步连接。例如,在 Execute 方法中使用“获取”操作,将使服务器获取请求的文件。当获取了整个文件之后,State 参数将返回 icResponseCompleted (12)。在这时候,就可以用 GetChunk 方法从缓冲区中获取数据了。下面的示例中给出了这种情况:Private Sub Inet1_StateChanged(ByVal State As Integer)Dim vtData As Variant 数据变量。Select Case State.没有给出其它情况。Case icResponseCompleted 12打开文件用于写入。Open txtOperation For Binary Access _Write As #intFile得到第一个大块。注意:指定 Byte 数组 (icByteArray) 以获取二进制文件。vtData = Inet1.GetChunk(1024, icString)Do While LenB(vtData) 0Put #intFile, , vtData得到下一大块。vtData = Inet1.GetChunk(1024, icString)LoopPut #intFile, , vtDataClose #intFileEnd SelectEnd Sub登录到 FTP 服务器FTP 服务器有两种:公用的和私用的。公用服务器,顾名思义,是对所有人开放的。而私用服务器,除了该服务器的真正用户,其他人不能登录。在这两种情况下,FTP 协议都要求提供用户名和密码。这两个参数用来验明用户,并允许(或禁止)进一步的操作。要登录到公用服务器,通常的做法是以“匿名”登录 (UserName = anonymous),然后发送用户的电子邮件名称作为密码。然而使用 Internet 传输控件这一过程还能够进一步简化。按照缺省规定,如果没有提供 UserName 和 Password 属性值,该控件发送“匿名”作为 UserName,用户的电子邮件名称作为 Password。如果要登录到私用服务器,只需适当地设置 UserName、Password 和 URL 属性,并调用 Execute 方法,如下面的示例所示:With Inet1.URL = ftp:/ftp.someFTPS.UserName = John Smith.Password = mAuI&9$6.Execute ,DIR 返回该目录。.Execute ,CLOSE 关闭连接。End With在调用 Execute 方法之后,FTP连接仍旧打开着。这时可以继续使用 Execute 方法完成其它 FTP 操作,比如 CD 和 GET。如果会话已经完成,使用 Execute 方法执行 CLOSE 操作以关闭连接。也可以通过改变 URL 属性,并调用 OpenURL 或 Execute 方法,自动关闭该连接,这样的操作会关闭当前 FTP 连接,并打开新的 URL或IP。使用 Internet Transfer 控件 Internet Transfer 控件实现了两种广泛使用的 Internet 协议: 超文本传送协议(HyperText Transfer Protocol)(HTTP) 和文件传送协议(File Transfer Protocol) (FTP)。使用 Internet Transfer 控件可以通过 OpenURL 或 Execute 方法连接到任何使用这两个协议的站点并检索文件。 可能的用途 在应用程序中添加 FTP 浏览器。 创建自动从公共 FTP 站点下载文件的应用程序。 分析 World Wide Web 站点中的图形引用,并只下载图形。 提供以自定义格式显示从 Web 页获得的动态数据。 基本操作 Internet Transfer 控件的功能依赖于将要使用的协议。由于所支持的两种协议工作起来不尽相同,所能够进行的操作就依赖于正在使用的协议。例如,GetHeader 方法只能用于 HTTP(HTML 文档)协议。 然而,有些过程对两个协议是通用的。最基本的,如果要使用任何一个协议,则必须: 将 AccessType 属性设置为合法的代理服务器。 用合法的 URL 调用 OpenURL 方法。 用合法的 URL 和协议支持的命令调用 Execute 方法。 用 GetChunk 方法从缓冲区获取数据。 设置 AccessType 属性:使用代理服务器 为了与 Internet 建立任何形式的连接,必须确定计算机如何连接到 Internet 上。如果在 intranet 上,可能需要提供代理服务器才能连接到 Internet 上。 简单地说,代理服务器是计算机和 Internet 之间的媒介。intranet 上所有需要连接到 Internet 上的计算机,都必须通过代理服务器。代理行使 intranet 和 Internet 之间的防火墙功能,能够阻止非法的最终用户和外部请求,也就保护了 intranet 不受破坏。 要查找计算机中的代理设置值,请按照以下步骤执行: 注意 下面的步骤只能用于 Windows 95 和 Windows NT(R) 4.0 系统。 在计算机的“任务栏”中,单击“启动”。 在“设置”项中,单击“控制面板”。 双击“Internet”图标。 在“Internet 属性”对话框中,单击“连接”。 在“代理服务器”中,确认选中了“通过代理服务器连接”复选框。 如果选中了,则单击“设置”。在该对话框中可以找到能够用于多种协议的代理服务器的名称。如果没有定义代理服务器,请与系统管理员联系,以获得可用的代理服务器。 如果希望使用对话框中未列出的代理服务器,可将 AccessType 属性设置为 icNamedProxy (2)。然后将 Proxy 属性设置为代理服务器的名称,如下面的代码所示: Inet1.Proxy = myProxyName Inet1.AccessType = icNamedProxy 另一方面,如果希望使用缺省代理服务器(由计算机的注册表决定),则可以忽略 Proxy 属性,而只需将 AccessType 设置为 icUseDefault (0)。 AccessType 的设置值在下表中列出: 常数 值 描述 icUseDefault 0 (缺省)用作缺省。控件使用注册表中的缺省设置访问 Internet。 icDirect 1 直接连接 Internet。该控件可直接连接到 Internet。 icNamedProxy 2 命名的代理服务器。指示该控件使用 Proxy 属性确定的代理服务器。 调用 OpenURL 方法 设置完 AccessType 属性后,最基本的操作就是用合法的 URL 调用 OpenURL 方法。使用 OpenURL 方法时,操作所得到的结果将依赖于目标 URL。例如下面的 URL 将返回在中找到的 HTML 文档: 名为“Text1”的 TextBox 控件保存了 该方法的结果。Internet 传输 控件的名称是“Inet1”。 Text1.Text = Inet1.OpenURL() 作为结果,TextBox 控件保存了 HTML 源码,它看上去应和下图显示的相似: 在这种情况下,缺省操作返回的是 URL 定位的 HTML 文档。然而,如果 URL 被改为指向文本文件,则将获得实际的文件。例如,下面的代码: Text1.Text = Inet1. _ OpenURL(/disclaimer.txt) 将获得文件的实际文本,如下所示: 提示 在使用 OpenURL 或 Execute 方法时,不需要设置 Protocol 属性。Internet Transfer 控件会自动按 URL 的协议部分确定的协议来设置。 最后,可以用包含附加数据的 URL 调用 OpenURL 方法。例如,很多 Web 站点提供了搜索数据库的能力。要搜索数据库,则需要在发送的 URL 中包含搜索条件。例如下面的代码用条件“find=Maui”调用名为“search.exe”的搜索引擎。 Dim strURL As String strURL = _ xe?find=maui Text1.Text = Inet1.OpenURL(strURL) 如果搜索引擎找到了符合条件的内容,将合成一个 HTML 文档并携带适当的信息返回。 用 OpenURL 方法保存到文件 如果需要将通过 OpenURL 方法获取的数据保存到文件,可以使用 Open、Put 和 Close 语句,如下面的代码所示。该示例先将获得的二进制文件传入 Byte 数组,然后将该数据保存到磁盘中: Dim strURL As String Dim bData() As Byte 数据变量 Dim intFile As Integer 可用文件变量 strURL = _ /Softlib/Softlib.e xe intFile = FreeFile() 将 intFile 设置为未使用的文件 OpenURL 方法的结果首先传入 Byte 数组, 然后将 Byte 数组保存到磁盘。 bData() = Inet1.OpenURL(strURL, icByteArray) Open C:TempSoftlib.e xe For Binary Access Write _ As #intFile Put #intFile, , bData() Close #intFile 可用类似的过程将文本文件写入磁盘中,不同的只是不再需要 Byte 数组了,数据可以直接保存到文件中: Dim strURL As String URL 字符串 Dim intFile As Integer 可用文件变量 IntFile = FreeFile() strURL = Open c:tempMSsource.txt For Output _ As #IntFile Write #IntFile, Inet1.OpenURL(strURL) Close #IntFile 同步和异步传输 OpenURL 方法以同步方式传输数据。在这里,同步指的是传输操作未完成之前,不能执行其它过程。这样数据传输就必须在执行其它代码之前完成。 而 Execute 方法以异步方式传输数据。在调用 Execute 方法时,传输操作与其它过程无关。这样,在调用 Execute 方法后,在后台接收数据的同时,即可同时执行其它代码。 对 Internet Transfer 控件的使用者来说这意味着什么?简单地说,用 OpenURL 方法能够直接得到可保存到磁盘的数据流(如上所述),或者直接在 TextBox 控件中阅览(如果数据是文本格式的)。从另一方面说,如果用 Execute 方法获取数据,则必须用 StateChanged 事件监视该控件的连接状态。当达到适当的状态时,调用 GetChunk 方法从控件的缓冲区获取数据。下面更详细地讨论这一操作。 在 FPT 协议中使用 Execute 方法 Execute 方法具有四个参数:url、operation、data 和 requestHeaders。FTP 操作只用到了 operation 参数和 url 参数,其中后者是可选的。例如,要从远程计算机中得到一个文件,可用下面的代码: Inet1.Execute FTP:/, _ GET disclaimer.txt C:TempDisclaimer.txt 如果正在用 FTP 从匿名 FTP 服务器中获取文件,就应熟悉在服务器目录树中漫游的特定命令,以及将其中文件获取到本地的硬盘中的命令。例如,要用 FPT 协议改变目录,应使用带有希望改变到的目录路径的“CD”命令。 对绝大多数通用操作,如将文件传入服务器,以及从服务器获取文件,Internet 传输控件在 Execute 方法中使用了(与 FTP)相同或相近的命令。例如,下面的代码将“CD”命令作为 Execute 方法的参数以改变路径: txtURL 文本框包含了要打开的路径。 txtRemotePath 文本框包含了要改变到的路径。 Inet1.Execute txtURL.Text, CD & txtRemotePath.Text 注意 在 Execute 方法中使用 FTP 命令时,没有用到 data 和 requestHeaders 参数。所有的操作和它们的参数都在 operation 参数中作为字符串进行传递;参数之间用空格进行分隔。在下面的描述中,不要把“file1”和“file2”项与 data 和 requestHeaders 参数搞混。 FTP 操作的语法是: operationName file1 file2 例如,要获取文件,在下面的代码中包含了操作的名称 (“获取”),以及该操作所需的两个文件名: 得到名为“Disclaimer.txt”的文件,并将其复制到 C:TempDisclaimer.txt。 Inet1.Execute, _ GET Disclaimer.txt C:TempDisclaimer.txt 下表列出了该控件支持的 FTP 命令: 操作 描述 示例 CD file1 改变目录。改变到由 file1 指定的目录中。 Execute , CD docsmydocs CDUP 改变到父目录。功能与“CD .”相同。 Execute , CDUP DELETE file1 删除由 file1 指定的文件。 Execute , DELETE discard.txt DIR file1 在由 file1 指定的目录中查找。如果没有指定 file1 目录,则查找当前工作目录。使用 GetChunk 方法返回数据。 Execute , DIR /mydocs GET file1 file2 获取由 file1 指定的远程文件,并创建由 file2 指定的新的本地文件。 Execute , _ GET getme.txt C:gotme.txt MKDIR file1 创建由 file1 指定的目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , MKDIR /myDir PUT file1 file2 将由 file1 指定的本地文件,复制到由 file2 指定的远程主机文件中。 Execute , _ PUT C:putme.txt /putme.txt PWD 打印工作目录。返回当前目录的名称。用 GetChunk 方法返回数据。 Execute , PWD QUIT 结束当前连接。 Execute , QUIT RECV file1 file2 与 GET 相同。 Execute , _ RECV getme.txt C:gotme.txt RENAME file1 file2 文件重命名。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , RENAME old.txt new.txt RMDIR file1 删除目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , RMDIR oldDir SEND file1 将文件复制到 FTP 站点。(与 PUT 相同) Execute , _ SEND C:putme.txt /putme.txt SIZE file1 返回由 file1 指定文件的大小。 Execute SIZE /largefile.txt 重点 如果代理服务器是 CERN 代理服务器,就不允许使用直接的 FTP 连接(使用 Execute 方法)。在这种情况下,要获得文件,则需使用带 Open、Put 和 Close 语句的 OpenURL 方法,就象前面“用 OpenURL 方法保存到文件”提到的那样。还可以用 OpenURL 方法得到目录列表,即将目标目录作为 URL,并调用该方法。 在 HTTP 协议上使用 Execute 方法 HTTP 协议允许客户机用 GET、HEAD、POST 和 PUT 命令向服务器请求数据。下表中列出了这些操作: 操作 描述 示例 GET 获取 url 中命名的文件。 Execute & _ /default.htm, GET HEAD 只获取 URL 属性中命名的文件的文件标头。 Execute , HEAD POST 提供附加数据,以支持向远程主机的请求。 Execute , POST, strFormData PUT 替换指定的 URL 中的数据。 Execute , PUT, replace.htm 通用网关接口和 Execute 方法 很多 World Wide Web 站点提供了搜索数据库的能力。它是通过 HTTP 协议用通用网关接口 (CGI) 发送查询的能力完成的。 在这里不再讨论 CGI 了。然而,如果对 CGI 比较了解,就可用 Execute 方法构造一个应用程序模拟 World Wide Web 站点的行为。例如,下面的代码给出了典型的 CGI 查询字符串: xe?find=Hangzhou 如下所示,用 Execute 方法也可以发送同样的查询: Dim strURL As String, strFormData As String strURL = / xe strFormData = find=Hangzhou Inet1.E xecute strURL, POST, strFormData 如果希望得到从服务器发回的结果(如上面的示例所示),就必须使用 GetChunk 方法以获取作为结果的 HTML 文档。 在 State 事件中使用 GetChunk 方法 在从远程计算机下载数据时,将建立异步连接。例如,在 Execute 方法中使用“获取”操作,将使服务器获取请求的文件。当获取了整个文件之后,State 参数将返回 icResponseCompleted (12)。在这时候,就可以用 GetChunk 方法从缓冲区中获取数据了。下面的示例中给出了这种情况: Private Sub Inet1_StateChanged(ByVal State As Integer) Dim vtData As Variant 数据变量。 Select Case State .没有给出其它情况。 Case icResponseCompleted 12 打开文件用于写入。 Open txtOperation For Binary Access _ Write As #intFile 得到第一个大块。注意:指定 Byte 数组 (icByteArray) 以获取二进制文件。 vtData = Inet1.GetChunk(1024, icString) Do While LenB(vtData) 0 Put #intFile, , vtData 得到下一大块。 vtData = Inet1.GetChunk(1024, icString) Loop Put #intFile, , vtData Close #intFile End Select End Sub 登录到 FTP 服务器 FTP 服务器有两种:公用的和私用的。公用服务器,顾名思义,是对所有人开放的。而私用服务器,除了该服务器的真正用户,其他人不能登录。在这两种情况下,FTP 协议都要求提供用户名和密码。这两个参数用来验明用户,并允许(或禁止)进一步的操作。 要登录到公用服务器,通常的做法是以“匿名”登录 (UserName = anonymous),然后发送用户的电子邮件名称作为密码。然而使用 Internet 传输控件这一过程还能够进一步简化。按照缺省规定,如果没有提供 UserName 和 Password 属性值,该控件发送“匿名”作为 UserName,用户的电子邮件名称作为 Password。 如果要登录到私用服务器,只需适当地设置 UserName、Password 和 URL 属性,并调用 Execute 方法,如下面的示例所示: With Inet1 .URL = ftp:/ftp.someFTPS .UserName = John Smith .Password = mAuI&9$6 .Execute ,DIR 返回该目录。 .Execute ,CLOSE 关闭连接。 End With 在调用 Execute 方法之后,FTP 连接仍旧打开着。这时可以继续使用 Execute 方法完成其它 FTP 操作,比如 CD 和 GET。如果会话已经完成,使用 Execute 方法执行 CLOSE 操作以关闭连接。也可以通过改变 URL 属性,并调用 OpenURL 或 Execute 方法,自动关闭该连接,这样的操作会关闭当前 FTP 连接,并打开新的 URL对于FTP,你可以使用Execute方法执行FTP命令SIZE获得文件大小。然后在StateChanged事件中可以获得返回的文件大小。 Private Sub Command1_Click() Inet1.Execute , SIZE 1.gif End Sub Private Sub Inet1_StateChanged(ByVal State As Integer) State = 12 时,用 GetChunk 方法检索服务器的响应。 Dim vtData As Variant Data variable. Select Case State .没有列举其它情况。 Case icError 11 出现错误时,返回 ResponseCode 和 ResponseInfo。 vtData = Inet1.ResponseCode & : & _ Inet1.ResponseInfo Case icResponseCompleted 12 Dim strData As String Dim bDone As Boolean: bDone = False 取得第一个块。 vtData = Inet1.GetChunk(1024, icString) DoEvents Do While Not bDone strData = strData & vtData 取得下一个块。 vtData = Inet1.GetChunk(1024, icString) DoEvents If Len(vtData) = 0 Then bDone = True End If Loop MsgBox strData End Select End Sub 对于HTTP下载,你可以用GetHeader(Content-length)来获得文件大小。但不是所有HTTP下载时都能获得文件长度,特别是通过代理服务器下载文件时。如: Private Sub Form_Load() Inet1.Execute / End Sub Private Sub Inet1_StateChanged(ByVal State As Integer) If State = icResponseReceived Then MsgBox File size is & Inet1.GetHeader(Content-Length) End If End Sub=在VB中实现文件上传 VisualBasic作为一个集应用程序开发、测试、查错功能于一体的集成式开发环境,越来越受到程序员的青睐。笔者在开发某数据库维护系统的过程中,选择了VB5.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论