Classe CFtpFileFind
Facilita le ricerche di file su Internet dei server FTP.
Sintassi
class CFtpFileFind : public CFileFind
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CFtpFileFind::CFtpFileFind | Costruisce un oggetto CFtpFileFind . |
Metodi pubblici
Nome | Descrizione |
---|---|
CFtpFileFind::FindFile | Trova un file in un server FTP. |
CFtpFileFind::FindNextFile | Continua una ricerca di file da una chiamata precedente a FindFile. |
CFtpFileFind::GetFileURL | Ottiene l'URL, incluso il percorso, del file trovato. |
Osservazioni:
CFtpFileFind
include funzioni membro che iniziano una ricerca, individuano un file e restituiscono l'URL o altre informazioni descrittive sul file.
Altre classi MFC progettate per La ricerca di file locali e Internet includono CGopherFileFind e CFileFind. CFtpFileFind
Insieme a , queste classi forniscono un meccanismo semplice per il client per trovare file specifici, indipendentemente dal protocollo del server o dal tipo di file (un computer locale o un server remoto). Non esiste alcuna classe MFC per la ricerca nei server HTTP perché HTTP non supporta la manipolazione diretta dei file necessaria per le ricerche.
Per altre informazioni su come usare CFtpFileFind
e le altre classi WinInet, vedere l'articolo Programmazione Internet con WinInet.
Esempio
Il codice seguente illustra come enumerare tutti i file nella directory corrente del server FTP.
// create a session object to initialize WININET library
// Default parameters mean the access method in the registry
// (that is, set by the "Internet" icon in the Control Panel)
// will be used.
CInternetSession sess(_T("My FTP Session"));
CFtpConnection *pConnect = NULL;
try
{
// Request a connection to ftp.microsoft.com. Default
// parameters mean that we'll try with username = ANONYMOUS
// and password set to the machine name @ domain name
pConnect = sess.GetFtpConnection(_T("ftp.microsoft.com"));
// use a file find object to enumerate files
CFtpFileFind finder(pConnect);
// start looping
BOOL bWorking = finder.FindFile(_T("*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
_tprintf_s(_T("%s\n"), (LPCTSTR)finder.GetFileURL());
}
}
catch (CInternetException *pEx)
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
_tprintf_s(_T("ERROR! %s\n"), sz);
pEx->Delete();
}
// if the connection is open, close it
if (pConnect != NULL)
{
pConnect->Close();
delete pConnect;
}
Gerarchia di ereditarietà
CFtpFileFind
Requisiti
Intestazione: afxinet.h
CFtpFileFind::CFtpFileFind
Questa funzione membro viene chiamata per costruire un CFtpFileFind
oggetto .
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
Parametri
pConnection
Puntatore a un oggetto CFtpConnection
. È possibile ottenere una connessione FTP chiamando CInternetSession::GetFtpConnection.
dwContext
Identificatore di contesto per l'oggetto CFtpFileFind
. Per altre informazioni, vedere le osservazioni seguenti.
Osservazioni:
Il valore predefinito per dwContext viene inviato da MFC all'oggetto dall'oggetto CFtpFileFind
CInternetSession che ha creato l'oggetto CFtpFileFind
. È possibile eseguire l'override dell'impostazione predefinita per impostare l'identificatore di contesto su un valore scelto. L'identificatore di contesto viene restituito a CInternetSession::OnStatusCallback per fornire lo stato sull'oggetto con cui viene identificato. Per altre informazioni sull'identificatore di contesto, vedere l'articolo Passaggi preliminari su Internet: WinInet .
Esempio
Vedere l'esempio nella panoramica della classe più indietro in questo argomento.
CFtpFileFind::FindFile
Chiamare questa funzione membro per trovare un file FTP.
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwFlags = INTERNET_FLAG_RELOAD);
Parametri
pstrName
Puntatore a una stringa contenente il nome del file da trovare. Se NULL, la chiamata eseguirà una ricerca con caratteri jolly (*).
dwFlags
Flag che descrivono come gestire questa sessione. Questi flag possono essere combinati con l'operatore OR bit per bit (|
) e sono i seguenti:
INTERNET_FLAG_RELOAD
Ottenere i dati dal collegamento anche se sono memorizzati nella cache locale. Questo è il flag predefinito.INTERNET_FLAG_DONT_CACHE
Non memorizzare nella cache i dati, in locale o in alcun gateway.INTERNET_FLAG_RAW_DATA
Eseguire l'override dell'impostazione predefinita per restituire i dati non elaborati ( WIN32_FIND_DATA strutture per FTP).INTERNET_FLAG_SECURE
Protegge le transazioni in transito con Secure Sockets Layer o PCT. Questo flag si applica solo alle richieste HTTP.INTERNET_FLAG_EXISTING_CONNECT
Se possibile, riutilizzare le connessioni esistenti al server per le nuoveFindFile
richieste anziché creare una nuova sessione per ogni richiesta.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0. Per ottenere informazioni estese sull'errore, chiamare la funzione Win32 GetLastError.
Osservazioni:
Dopo aver chiamato FindFile
per recuperare il primo file FTP, è possibile chiamare FindNextFile per recuperare i file FTP successivi.
Esempio
Vedere l'esempio precedente in questo argomento.
CFtpFileFind::FindNextFile
Chiamare questa funzione membro per continuare una ricerca di file iniziata con una chiamata alla funzione membro FindFile .
virtual BOOL FindNextFile();
Valore restituito
Diverso da zero se sono presenti più file; zero se il file trovato è l'ultimo nella directory o se si è verificato un errore. Per ottenere informazioni estese sull'errore, chiamare la funzione Win32 GetLastError. Se il file trovato è l'ultimo file nella directory o se non è possibile trovare file corrispondenti, la GetLastError
funzione restituisce ERROR_NO_MORE_FILES.
Osservazioni:
È necessario chiamare questa funzione almeno una volta prima di chiamare qualsiasi funzione di attributo (vedere CFileFind::FindNextFile).
FindNextFile
esegue il wrapping della funzione Win32 FindNextFile.
Esempio
Vedere l'esempio precedente in questo argomento.
CFtpFileFind::GetFileURL
Chiamare questa funzione membro per ottenere l'URL del file specificato.
CString GetFileURL() const;
Valore restituito
Il file e il percorso dell'URL (Universal Resource Locator).
Osservazioni:
GetFileURL
è simile alla funzione membro CFileFind::GetFilePath , ad eccezione del fatto che fornisce il risultato in formato URL. Come con CFileFind::GetFilePath
, il risultato non include il nome file. Ad esempio, file1.txt
che si trova in //moose/dir/file1.txt:
restituisce ftp://moose/dir/
.
Vedi anche
Classe CFileFind
Grafico della gerarchia
Classe CGopherFileFind
Classe CInternetFile
Classe CGopherFile
Classe CHttpFile