請教一下各位,在VB撰寫的DLL庫中使用winnet.dll的ftpPutfile函式上傳檔案時總失敗,用err.LastDllError獲取錯誤碼為2。但在普通exe程式中能正常上傳,部分程式代碼如下:
Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
Const FTP_TRANSFER_TYPE_ASCII = &H1
Const FTP_TRANSFER_TYPE_BINARY = &H2
Dim ftpConnState As Boolean
Dim ftpConn As Long
Private 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
Private 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
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
'建立連接
Public Function ftpServer(IP As String, Port As Integer, UserName As String, PassWord As String) As Boolean
Dim ftpInit As Long
ftpInit = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)
ftpConn = InternetConnect(ftpInit, IP, Port, UserName, PassWord, 1, 0, 0)
If ftpConn > 0 Then
ftpConnState = True
Else
ftpConnState = False
End If
ftpServer = ftpConnState
End Function
'上傳檔案
Public Function ftpUploadFile(localPath As String, remotePath As String) As Boolean
If ftpConnState = True Then
ftpUploadFile = FtpPutFile(ftpConn, localPath, remotePath, FTP_TRANSFER_TYPE_ASCII, 0)
If Not ftpUploadFile Then
MsgBox Err.Description, Err.LastDllError
End If
Else
MsgBox "請先確認連接"
End If
End Function
uj5u.com熱心網友回復:
GetLastError=2是ERROR_FILE_NOT_FOUND,檢查下你的localPath和remotePath是否正確!轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/84152.html
標籤:API
