很久前参考别人的做过一个,代码你要自己看了,这个是上传的。放在一个MODULE里,调用FTPFile()函数,里面的参数要改!Public 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
Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
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
' Closes a single Internet handle or a subtree of Internet handles.
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
' Opens a HTTP session for a given site.
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
Public Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" (lpdwError As Long, ByVal lpszBuffer As String, lpdwBufferLength As Long) As Boolean
' Use registry access settings.
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 = 0Public Const FTP_TRANSFER_TYPE_ASCII = &H1
Public Const FTP_TRANSFER_TYPE_BINARY = &H1
Public Const INTERNET_FLAG_PASSIVE = &H8000000
Public Const ERROR_INTERNET_EXTENDED_ERROR = 12003' Number of the TCP/IP port on the server to connect to.
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 = 1080Public Const INTERNET_OPTION_CONNECT_TIMEOUT = 2
Public Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6
Public Const INTERNET_OPTION_SEND_TIMEOUT = 5Public Const INTERNET_OPTION_USERNAME = 28
Public Const INTERNET_OPTION_PASSWORD = 29
Public Const INTERNET_OPTION_PROXY_USERNAME = 43
Public Const INTERNET_OPTION_PROXY_PASSWORD = 44' Type of service to access.
Public Const INTERNET_SERVICE_FTP = 1
Public Const INTERNET_SERVICE_GOPHER = 2
Public Const INTERNET_SERVICE_HTTP = 3'----------------------------------------
'   Module : mdlFTP.bas
'   Purpose : FTP the file to the davox server
'   Input   : File name frmDownLoad.txtOutput.text
'   Output  : TRUE/FALSE
'-----------------------------------------------'Indicates if the internet funtion is open
Dim m_hOpen As Long'Indicates if a internet connection is open
Dim m_hConnection As Long' User agent constant.
Public Const m_cstrUserAgent = "vb wininet"Function FTPFile() As Boolean
'Purpose : FTP the file to davox server
'Input   : None
'Output  : True/False
'    Initial
    
    'Initializes the use of the Internet functions.
    m_hOpen = InternetOpen(m_cstrUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
    If m_hOpen = 0 Then
        ErrorOut Err.LastDllError, "InternetOpen"
        Exit Function
    End If
    
    'opens FTP or HTTP session for a specified site
    Dim strServer As String
    Dim strUser As String
    Dim strPwd As String
    Dim lFlag As Long
    
    strServer = "146.40.63.201"
    strUser = "davox"
    strPwd = "davox"
    lFlag = 0
    
    m_hConnection = InternetConnect(m_hOpen, strServer, INTERNET_INVALID_PORT_NUMBER, strUser, strPwd, INTERNET_SERVICE_FTP, lFlag, 0)
    
    If m_hConnection = 0 Then
        ErrorOut Err.LastDllError, "InternetConnect"
        Exit Function
    End If    
    'Change the remote directory
    Dim strRemoteDir As String
    Dim bSuccess As Boolean
    
    strRemoteDir = "/opt/davox/trs/rcs/"
    bSuccess = FtpSetCurrentDirectory(m_hConnection, strRemoteDir)
    
    If bSuccess = False Then
        ErrorOut Err.LastDllError, "InternetConnect"
        Exit Function
    End If
    
    'FTP the file
    Dim strLocalFileName As String
    Dim strRemoteFileName As String
    Dim n As Integer
    
    strLocalFileName = frmDownLoad.txtOutput.Text
    n = InStrRev(strLocalFileName, "\", , vbTextCompare)
    strRemoteFileName = Right(strLocalFileName, Len(strLocalFileName) - n)
    
    bSuccess = FtpPutFile(m_hConnection, strLocalFileName, strRemoteFileName, FTP_TRANSFER_TYPE_BINARY, 0)
    
    If bSuccess = False Then
        ErrorOut Err.LastDllError, "FtpPutFile"
        Exit Function
    End If    'Close the internet connection
    InternetCloseHandle m_hConnection
    m_hConnection = 0    InternetCloseHandle m_hOpen
    m_hOpen = 0    FTPFile = True
End FunctionFunction ErrorOut(lDLLError As Long, strCallFunction As String)
'Purpose : Output the error message
'Input   : lDLLError - error code, strCallFunction - call function name
'Output  : None
'    Dim lError As Long
    Dim lLength As Long
    Dim strBuffer As String
    
    If lDLLError = ERROR_INTERNET_EXTENDED_ERROR Then
        InternetGetLastResponseInfo lError, vbNullString, lLength
        strBuffer = String(lLength + 1, 0)
        InternetGetLastResponseInfo lError, strBuffer, lLength
        
        MsgBox strCallFunction & " Extd Err: " & lError & " " & strBuffer, vbCritical, "FTP file"
    Else
        MsgBox "FTP Failed", vbCritical, "FTP file"
    End If
    
    If m_hConnection Then InternetCloseHandle m_hConnection
    
    If m_hOpen Then InternetCloseHandle m_hOpen
    
    m_hConnection = 0
    m_hOpen = 0
End FunctionSub Initial()
'Purpose : Initialize variants
'
    m_hOpen = 0
    m_hConnection = 0
End Sub