很久前参考别人的做过一个,代码你要自己看了,这个是上传的。放在一个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
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货