我要實現這樣一個功能,table 裡每一記錄對應一個報告文件,這些報告文件存放在FTP上面,我想在界面裡每選擇一條記錄然後通過訪問FTP上面的對應的報告文件,然後把此報告文件的完整路徑存放在table的某欄裡,當執行界面的查詢時,把滿足條件的所有記錄的報告文件復制到在此FTP上面生成的一個temp 目錄裡.現在有三個難點,
第一,如何訪問FTP上的文件
第二,如何提取所選取文件的完整目錄
第三,如何在FTP上生成目錄請高手解答,謝謝.

解决方案 »

  1.   

    1,ftp链接后,发送ftp特有字段来操作
    3,mdir命令 
      

  2.   

     Option Explicit 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 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 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 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 FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" _ 
    (ByVal hFtpSession As Long, ByVal lpszFileName As String) As Boolean Public Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" _ 
    (ByVal hFtpSession As Long, ByVal lpszExsiting As String, ByVal lpszNew As String) As Boolean Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer 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 Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _ 
    (ByVal hFind As Long, lpvFndData As WIN32_FIND_DATA) As Long Public Type FILETIME 
    dwLowDateTime As Long 
    dwHighDateTime As Long 
    End Type 
    Public Type WIN32_FIND_DATA 
    dwFilAttributes 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 * 260 
    cAlternate As String * 14 
    End Type 
    Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ 
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Type OPENFILENAME 
    lStructSize As Long 
    hwndOwner As Long 
    hInstance As Long 
    lpstrFilter As String 
    lpstrCustomFilter As String 
    nMaxCustFilter As Long 
    nFilterIndex As Long 
    lpstrFile As String 
    nMaxFile As Long 
    lpstrFileTitle As String 
    nMaxFileTitle As Long 
    lpstrInitialDir As String 
    lpstrTitle As String 
    flags As Long 
    nFileOffset As Integer 
    nFileExtension As Integer 
    lpstrDefExt As String 
    lCustData As Long 
    lpfnHook As Long 
    lpTemplateName As String 
    End Type 
    Private Sub Command1_Click() 
    lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ 
    vbNullString, vbNullString, 0&) 
    If lnginet Then 
    lnginetconn = InternetConnect(lnginet, "ip地址", 0, _ 
    "用户名", "密码", 1, 0, 0) 
    If lnginetconn Then 
    blnRC = FtpGetFile(lnginetconn, "website/address.ASP", "c:\address.ASP", 0, 0, 1, 0) 
    If blnRC Then 
    MsgBox "download ok!!!" 
    End If 
    InternetCloseHandle lnginetconn 
    InternetCloseHandle lnginet 
    MsgBox "close ok!!!" 
    Else 
    MsgBox "can't connect" 
    End If 
    Else 
    MsgBox "ftp wrong" 
    End If 
    End Sub Private Sub Command2_Click() 
    Dim pData As WIN32_FIND_DATA 
    Dim lngHINet As Long 
    Dim intError As Integer 
    Dim strTemp As String 
    Dim blnRC As Boolean 
    pData.cFileName = String(260, 0) 
    lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ 
    vbNullString, vbNullString, 0&) 
    If lnginet Then 
    lnginetconn = InternetConnect(lnginet, "IP地址", 0, _ 
    "用户名", "密码", 1, 0, 0) 
    If lnginetconn Then 
    lngHINet = FtpFindFirstFile(lnginetconn, "*.*", pData, 0, 0) 
    strTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1) 
    Do 
    pData.cFileName = String(260, 0) 
    blnRC = InternetFindNextFile(lngHINet, pData) 
    If Not blnRC Then 
    Exit Do 
    Else 
    strTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1) 
    End If Loop 
    Text1.Text = strTemp 
    End If 
    End If 
    InternetCloseHandle lngHINet InternetCloseHandle lnginetconn 
    InternetCloseHandle lnginet 
    End Sub