|
楼主 |
发表于 2011-3-29 10:21
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
5. 查到或知道文件名了,要下载文件,用FtpGetFile函数 。这个函数作用是,完成从一个FTP服务器上读取文件,并下载到本地存储的功能。
(1)函数的声明是:
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String,ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
(2)主要参数说明:
第一个参数hFtpSession 是InternetConnect 调用返回的句柄值(如上面的:lngINetConn)。
lpszRemoteFile和lpszNewFile 分别是要从FTP服务器上下载的文件的名称和下载后将在本地机上保存的文件的路径和文件名。
fFailIfExists:一般为0(同名文件替换)或1 (如果本地文件已经存在则取消下载)。
dwFlagsAndAttributes是用来指定本地文件的属性。一般为0。
dwFlags 参数是用来设定传输方式,一般为:1是用ASCII 传输文件,和2是用二进制传输文件。
最后还是lContext,如使用回叫信号时,用来识别应用程序前后关系。一般不用回叫,一般为0。
(3)举例:以下是从FTP上下载A.TXT文件并将其保存为本地C盘的A.TXT文件。如果本地文件已经存在,就覆盖它。假设A.TXT是ASCII文件。
blnRC = FtpGetFile(lngINetConn, A.txt,c:A.txt, 0, 0, 1, 0)
(4)结果句柄:如果函数调用成功,blnRC为 True, 反之为False。
6、FtpPutFile函数。很简单,上面的反函数,上传本地文件用的:
(1)函数声明:
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
(2)主要参数:
第一个参数hFtpSession 是InternetConnect 调用返回的句柄值。如上面的:lngINetConn);
lpszNewFile 和lpszRemoteFile 分别是要上传的本地机上的文件的路径和文件名和将在远程主机上创建的文件的文件名。
参数dwFlags 和FtpGetFile函数一样,一般指定为:1——用ASCII 传输文件;或2——用二进制传输文件。
最后lContext,还是回声,如使用回叫信号时,用来识别应用程序前后关系。一般不用为0。
(3)举例:将本地C盘的B.TXT文件上传到服务器已经设定的目录下,保存为B.TXT的写法。
blnRC = FtpPutFile(lngINetConn, C:B.txt,B.txt,1, 0)
(4)结果句柄:如果函数调用成功,blnRC为 True, 反之为False。
7、现在所有功能函数处理完毕了,最后,使用InternetCloseHandle 调用来关闭连接和session 句柄。
(1)调用函数的声明是:
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer.
(2)参数:很高兴,此函数只有一个参数hInet,是要关闭或抛弃的句柄的值。
一般,因为InternetConnection 和InternetOpen 中有句柄,就需要调用这个关闭这两个函数各一次。另外,因为InternetConnection 句柄是由InternetOpen 句柄决定的,关闭他们时的顺序与创建时相反。
(3)举例:
InternetCloseHandle lngINetConn
InternetCloseHandle lngINet
估计看完上述解释,各位应该都能初步运用API去和FTP服务器联动了吧,确实有点复杂的调用过程,有没有简便的呢?有,感谢WINLAND老师,已经在论坛上面提供了FTP的类模块。http://club.excelhome.net/viewth ... =1139642#pid1412251
大家可以参考里面的类,很简便就可以操作FTP了,里面还有一些上传下载的示例。
另外,针对FTP服务器文件目录的罗列,和文件的模糊查找以及定位,我也做了个示例,如一楼附件,大家也可以参考一下。
[ 本帖最后由 xmyjk 于 2011-3-29 11:52 编辑 ] |
|