Programación General > Visual Basic 6.0 e inferiores

 Como Listar Los Directorios Y Ficheros Del Ftp

(1/1)

MindEye:
- Hola compañeros, me podría alguien explicar, como se puede listar los directorios y ficheros que tiene un ftp.

 - El tema es que necesito saber la cantidad de ficheros que tengo, para poder descargar con un progressbar, pero es que no lo consiguo

 - Gracias...

Cyclop:
A ver si esto te ayuda


--- Código: Text ---Const FTP_TRANSFER_TYPE_UNKNOWN = &H0Const FTP_TRANSFER_TYPE_ASCII = &H1Const FTP_TRANSFER_TYPE_BINARY = &H2Const INTERNET_DEFAULT_FTP_PORT = 21               ' default for FTP serversConst INTERNET_SERVICE_FTP = 1Const INTERNET_FLAG_PASSIVE = &H8000000            ' used for FTP connectionsConst INTERNET_OPEN_TYPE_PRECONFIG = 0                    ' use registry configurationConst INTERNET_OPEN_TYPE_DIRECT = 1                        ' direct to netConst INTERNET_OPEN_TYPE_PROXY = 3                         ' via named proxyConst INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4   ' prevent using java/script/INSConst MAX_PATH = 260Private Type FILETIME    dwLowDateTime As Long    dwHighDateTime As LongEnd TypePrivate 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 * 14End TypePrivate Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As IntegerPrivate 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 LongPrivate 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 LongPrivate Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As BooleanPrivate Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As LongPrivate Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As BooleanPrivate Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As BooleanPrivate Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, ByVal lpszFileName As String) As BooleanPrivate Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" (ByVal hFtpSession As Long, ByVal lpszExisting As String, ByVal lpszNew As String) As BooleanPrivate Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hConnect As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As BooleanPrivate Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As BooleanPrivate Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" (lpdwError As Long, ByVal lpszBuffer As String, lpdwBufferLength As Long) As BooleanPrivate 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 LongPrivate Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As LongConst PassiveConnection As Boolean = TruePrivate Sub Form_Load()    'KPD-Team 2000    'URL: http://www.allapi.net    'E-Mail: KPDTeam@allapi.net    Dim hConnection As Long, hOpen As Long, sOrgPath  As String    'open an internet connection    hOpen = InternetOpen("API-Guide sample program", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)    'connect to the FTP server    hConnection = InternetConnect(hOpen, "your ftp server", INTERNET_DEFAULT_FTP_PORT, "your login", "your password", INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)    'create a buffer to store the original directory    sOrgPath = String(MAX_PATH, 0)    'get the directory    FtpGetCurrentDirectory hConnection, sOrgPath, Len(sOrgPath)    'create a new directory 'testing'    FtpCreateDirectory hConnection, "testing"    'set the current directory to 'root/testing'    FtpSetCurrentDirectory hConnection, "testing"    'upload the file 'test.htm'    FtpPutFile hConnection, "C:\test.htm", "test.htm", FTP_TRANSFER_TYPE_UNKNOWN, 0    'rename 'test.htm' to 'apiguide.htm'    FtpRenameFile hConnection, "test.htm", "apiguide.htm"    'enumerate the file list from the current directory ('root/testing')    EnumFiles hConnection    'retrieve the file from the FTP server    FtpGetFile hConnection, "apiguide.htm", "c:\apiguide.htm", False, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0    'delete the file from the FTP server    FtpDeleteFile hConnection, "apiguide.htm"    'set the current directory back to the root    FtpSetCurrentDirectory hConnection, sOrgPath    'remove the direcrtory 'testing'    FtpRemoveDirectory hConnection, "testing"    'close the FTP connection    InternetCloseHandle hConnection    'close the internet connection    InternetCloseHandle hOpenEnd SubPublic Sub EnumFiles(hConnection As Long)    Dim pData As WIN32_FIND_DATA, hFind As Long, lRet As Long    'set the graphics mode to persistent    Me.AutoRedraw = True    'create a buffer    pData.cFileName = String(MAX_PATH, 0)    'find the first file    hFind = FtpFindFirstFile(hConnection, "*.*", pData, 0, 0)    'if there's no file, then exit sub    If hFind = 0 Then Exit Sub    'show the filename    Me.Print Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)    Do        'create a buffer        pData.cFileName = String(MAX_PATH, 0)        'find the next file        lRet = InternetFindNextFile(hFind, pData)        'if there's no next file, exit do        If lRet = 0 Then Exit Do        'show the filename        Me.Print Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)    Loop    'close the search handle    InternetCloseHandle hFindEnd SubSub ShowError()    Dim lErr As Long, sErr As String, lenBuf As Long    'get the required buffer size    InternetGetLastResponseInfo lErr, sErr, lenBuf    'create a buffer    sErr = String(lenBuf, 0)    'retrieve the last respons info    InternetGetLastResponseInfo lErr, sErr, lenBuf    'show the last response info    MsgBox "Error " + CStr(lErr) + ": " + sErr, vbOKOnly + vbCriticalEnd Sub  
Salu2

Cyclop

Cyclop:
aunque te recomiendo que bajes el API Guide 3.7 del www.allapi.net

Salu2

Cyclop

Navegación

[0] Índice de Mensajes

Ir a la versión completa