请问在vbs中如何定义ftp的api

windows下的FTP函数怎么在vbs中调用?

在VBS中调用WINDOWS的FTP函数较困难,除非你能将API函数封装成ACTIVEX DLL.下面是网上找到的函数:
***********************************************
FTP 函 数 描 述

InternetOpen 初始化 Win32 internet

InternetConnect 打开一个FTP, HTTP, or Gopher 应用会话

FtpCreateDirectory 在服务器上建立一个新的目录

FtpRemoveDirectory 删除服务器上的一个目录

FtpSetCurrentDirectory 设置服务器上当前的工作目录

FtpGetCurrentDirectory 返回服务器当前的工作目录

FtpOpenFile 打开服务器上的一个文件进行读写

FtpGetFile 接收指定的文件并且在本地建立它

FtpPutFile 发送指定文件到服务器

FtpDeleteFile 删除服务器上一个指定的文件

FtpCommand 发送命令到服务器

FtpFindFirstFile 返回文件信息。放在 WIN32_FIND_DATA 结构中

InternetFindNextFile 调用 FtpFindFirstFile()后在目录中连续查找

FtpRenameFile 修改服务器上指定的文件的名字

主要是显示远端目录列表,上传、下载文件,

'########################################################################

'## ##

'## FTPAPI声明 ##

'## ##

'########################################################################

Public Const ERROR_NO_MORE_FILES = 18

Public Const ERROR_INTERNET_EXTENDED_ERROR = 12003

Public Const FTP_TRANSFER_TYPE_BINARY = &H2

Public Const FTP_TRANSFER_TYPE_ASCII = &H1

Public Const INTERNET_FLAG_PASSIVE = &H8000000

Public Const INTERNET_FLAG_RELOAD = &H80000000

Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000

Public Const INTERNET_FLAG_MULTIPART = &H200000

Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0

Public Const INTERNET_OPEN_TYPE_DIRECT = 1

Public Const INTERNET_OPEN_TYPE_PROXY = 3

Public Const INTERNET_INVALID_PORT_NUMBER = 0

Public Const INTERNET_SERVICE_FTP = 1

Public Const INTERNET_SERVICE_GOPHER = 2

Public Const INTERNET_SERVICE_HTTP = 3

Public Const MAX_PATH = 260

Public Const NO_ERROR = 0

Public Const FILE_ATTRIBUTE_READONLY = &H1

Public Const FILE_ATTRIBUTE_HIDDEN = &H2

Public Const FILE_ATTRIBUTE_SYSTEM = &H4

Public Const FILE_ATTRIBUTE_DIRECTORY = &H10

Public Const FILE_ATTRIBUTE_ARCHIVE = &H20

Public Const FILE_ATTRIBUTE_NORMAL = &H80

Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

Public Const FILE_ATTRIBUTE_COMPRESSED = &H800

Public Const FILE_ATTRIBUTE_OFFLINE = &H1000

Public Const INTERNET_DEFAULT_FTP_PORT = 21

Public Const INTERNET_DEFAULT_GOPHER_PORT = 70

Public Const INTERNET_DEFAULT_HTTP_PORT = 80

Public Const INTERNET_DEFAULT_HTTPS_PORT = 443

Public Const INTERNET_DEFAULT_SOCKS_PORT = 1080

Public Type FILETIME

dwLowDateTime As Long

dwHighDateTime As Long

End Type

Public Type WIN32_FIND_DATA

dwFileAttributes As Long

ftCreationTime As FILETIME

ftLastAccessTime As FILETIME

ftLastWriteTime As FILETIME

nFileSizeHigh As Long

nFileSizeLow As Long

dwReserved0 As Long

dwReserved1 As Long

cFileName As String * MAX_PATH

cAlternate As String * 14

End Type

'连接FTP服务器的操作函数

'打开连接internet的会话

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _

(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _

ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

'sAgent--要调用internet对话的应用程序名

'lAccessType--请求的访问的类型,包括:

'INTERNET_OPEN_TYPE_PRECONFIG---预配置(缺省)

'INTERNET_OPEN_TYPE_DIRECT--直接指向internet

'INTERNET_OPEN_TYPE_PROXY--通过代理服务器连接

'sProxyName--如果lAccessType被设置为INTERNET_OPEN_TYPE_PROXY,该参数为

'代理服务器的名字

'sProxyBypass--包含一系列代理服务器地址的字符串

'lFlags--会话的选项,可包括下列值:

'INTERNET_FLAG_DONT_CACHE--不对数据进行本地缓冲或通过网关服务器缓冲

'INTERNET_FLAG_ASYNC--当操作完成时,将同INTERNET_STATUS_REQUEST_COMPLETE

'一起进行一个状态回调

'INTERNET_FLAG_OFFLINE--只通过永久缓冲进行下载操作

'打开一个根据连接类型的Internet连接

Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _

(ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, _

ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, _

ByVal lFlags As Long, ByVal lContext As Long) As Long

'hInternetSession--函数InternetOpen()打开Internet对话返回的值

'sServerName--要连接的服务器的名称或IP

'nServerPort--该连接的Internet端口

'sUsername--登录的用户帐号

'sPassword--登录的口令

'lService--要连接的服务器类型(这里是连接FTP服务器,连接的类型为常数INTERNET_SERVICE_FTP)

'关闭Internet连接

Public Declare Function InternetCloseHandle Lib "wininet.dll" _

(ByVal hInet As Long) As Integer

'hInet--InternetConnect()函数返回的值

'文件查找操作

'在FTP连接中查找一个文件。在调用此函数后取得第一个文件后,可以接着调用FtpFindNextFile()

'获得下一个查到的FTP服务器上的文件。

Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _

(ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _

lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long

'lpszSearchFile--指向要搜索的文件名。可以通配符*.*的形式。

'lpFindFileData--用于装载与找到的文件有关的具体信息

'dwFlags--数据传输的方式,通常设置为0,(ASCII方式)

'继续由FtpFindFirstFile()函数发起的文件搜索操作

Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _

(ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long

'hFind--FtpFindFirstFile()函数的返回值

'lpvFindData--用于装载与找到的文件有关的具体信息

'目录操作

'改变FTP服务器的当前目录。

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _

(ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean

'lpszDirectory--包含要到达的目录名。可以是相对的或绝对的路径。

'在ftp服务器上创建目录

Public Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" _

(ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean

'lpszDirectory--包含要创建目录的字符串,可以是一个相对路径或绝对路径

'取得ftp当前的目录的名字

Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _

(ByVal hFtpSession As Long, lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Boolean

'lpszCurrentDirectory--存放目录名字的字符串

'lpdwCurrentDirectory--目录名字字符串的字节数

'删除ftp服务器的一个目录

Public Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" _

(ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean

'lpszDirectory--要删除的目录名称,可以是相对路径或绝对路径

'文件操作

'从ftp服务器上取得一个文件并保存在本地机器上,此函数包括了与从一个FTP服务器中读取一个文件

'并在本地保存等操作有关的所有功能

Public 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

'lpszRemoteFile--包含FTP服务器中要读的文件名

'lpszNewFile--在本地机器中要创建的文件名

'fFailIfExists--当为TRUE时,如果文件已经存在,则调用失败

'dwFlagsAndAttributes--文件的属性

'dwFlags--文件的传输方式可能包括下列值:

'FTP_TRANSFER_TYPE_ASCII--使用可以将控制和格式信息转换到本地对应文件的ASCII传输方式

'FTP_TRANSFER_TYPE_BINARY--使用把文件作为一个连续数据流传输的FTP图象传输方式,这种方式

'不区别在文件内部数据结构之间的任何分界(如行结束的回车标记)

'dwContext--要取回的文件的描述表标识符

参考资料:http://blog.chinaunix.net/u/22170/showart_475683.html

温馨提示:答案为网友推荐,仅供参考
第2个回答  2009-02-01
vbs是脚本,好像不能调用api吧?