Klasa CFtpFileFind
Pomoc w wyszukiwaniu plików internetowych serwerów FTP.
Składnia
class CFtpFileFind : public CFileFind
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CFtpFileFind::CFtpFileFind | CFtpFileFind Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CFtpFileFind::FindFile | Znajduje plik na serwerze FTP. |
CFtpFileFind::FindNextFile | Kontynuuje wyszukiwanie plików z poprzedniego wywołania metody FindFile. |
CFtpFileFind::GetFileURL | Pobiera adres URL, w tym ścieżkę znalezionego pliku. |
Uwagi
CFtpFileFind
zawiera funkcje członkowskie, które rozpoczynają wyszukiwanie, lokalizują plik i zwracają adres URL lub inne opisowe informacje o pliku.
Inne klasy MFC przeznaczone dla wyszukiwanych plików internetowych i lokalnych obejmują CGopherFileFind i CFileFind. Razem z klasami CFtpFileFind
te zapewniają bezproblemowy mechanizm znajdowania określonych plików przez klienta niezależnie od protokołu serwera lub typu pliku (komputera lokalnego lub serwera zdalnego). Nie ma klasy MFC do wyszukiwania na serwerach HTTP, ponieważ protokół HTTP nie obsługuje bezpośredniej manipulacji plikami wymaganej do wyszukiwania.
Aby uzyskać więcej informacji na temat używania CFtpFileFind
i innych klas WinInet, zobacz artykuł Internet Programming with WinInet (Programowanie internetowe za pomocą usługi WinInet).
Przykład
Poniższy kod przedstawia sposób wyliczania wszystkich plików w bieżącym katalogu serwera 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;
}
Hierarchia dziedziczenia
CFtpFileFind
Wymagania
Nagłówek: afxinet.h
CFtpFileFind::CFtpFileFind
Ta funkcja składowa jest wywoływana w celu skonstruowania CFtpFileFind
obiektu.
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
Parametry
Połączenie p
Wskaźnik do CFtpConnection
obiektu. Połączenie FTP można uzyskać, wywołując połączenie CInternetSession::GetFtpConnection.
dwContext
Identyfikator CFtpFileFind
kontekstu obiektu. Aby uzyskać więcej informacji, zobacz następujące uwagi.
Uwagi
Wartość domyślna dwContext jest wysyłana przez MFC do CFtpFileFind
obiektu z obiektu CInternetSession, który utworzył CFtpFileFind
obiekt. Możesz zastąpić wartość domyślną, aby ustawić identyfikator kontekstu na wartość wybranej wartości. Identyfikator kontekstu jest zwracany do CInternetSession::OnStatusCallback , aby podać stan obiektu, z którym został zidentyfikowany. Aby uzyskać więcej informacji na temat identyfikatora kontekstu, zobacz artykuł Internet First Steps: WinInet (Internet First Steps: WinInet: WinInet ).
Przykład
Zobacz przykład z przeglądu klasy we wcześniejszej części tego tematu.
CFtpFileFind::FindFile
Wywołaj tę funkcję składową, aby znaleźć plik FTP.
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwFlags = INTERNET_FLAG_RELOAD);
Parametry
pstrName
Wskaźnik do ciągu zawierającego nazwę pliku do znalezienia. Jeśli wartość NULL, wywołanie wykona wyszukiwanie symboli wieloznacznych (*).
dwFlags
Flagi opisujące sposób obsługi tej sesji. Te flagi mogą być łączone z operatorem bitowym OR (|
) i są następujące:
INTERNET_FLAG_RELOAD
Pobierz dane z przewodu, nawet jeśli są lokalnie buforowane. Jest to flaga domyślna.INTERNET_FLAG_DONT_CACHE
Nie buforuj danych lokalnie ani w żadnych bramach.INTERNET_FLAG_RAW_DATA
Zastąp wartość domyślną, aby zwrócić nieprzetworzone dane ( WIN32_FIND_DATA struktury ftp).INTERNET_FLAG_SECURE
Zabezpiecza transakcje na przewodach za pomocą protokołu Secure Sockets Layer lub PCT. Ta flaga dotyczy tylko żądań HTTP.INTERNET_FLAG_EXISTING_CONNECT
Jeśli to możliwe, użyj ponownie istniejących połączeń z serwerem dla nowychFindFile
żądań zamiast tworzyć nową sesję dla każdego żądania.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0. Aby uzyskać rozszerzone informacje o błędzie, wywołaj funkcję Win32 GetLastError.
Uwagi
Po wywołaniu metody FindFile
w celu pobrania pierwszego pliku FTP można wywołać metodę FindNextFile , aby pobrać kolejne pliki FTP.
Przykład
Zobacz wcześniejszy przykład w tym temacie.
CFtpFileFind::FindNextFile
Wywołaj tę funkcję składową, aby kontynuować wyszukiwanie plików rozpoczęte za pomocą wywołania funkcji składowej FindFile .
virtual BOOL FindNextFile();
Wartość zwracana
Niezerowe, jeśli istnieje więcej plików; zero, jeśli znaleziony plik jest ostatnim w katalogu lub jeśli wystąpił błąd. Aby uzyskać rozszerzone informacje o błędzie, wywołaj funkcję Win32 GetLastError. Jeśli znaleziony plik jest ostatnim plikiem w katalogu lub jeśli nie można odnaleźć pasujących plików, GetLastError
funkcja zwróci ERROR_NO_MORE_FILES.
Uwagi
Tę funkcję należy wywołać co najmniej raz przed wywołaniem dowolnej funkcji atrybutu (zobacz CFileFind::FindNextFile).
FindNextFile
opakowuje funkcję Win32 FindNextFile.
Przykład
Zobacz przykład we wcześniejszej części tego tematu.
CFtpFileFind::GetFileURL
Wywołaj tę funkcję składową, aby uzyskać adres URL określonego pliku.
CString GetFileURL() const;
Wartość zwracana
Plik i ścieżka uniwersalnego lokalizatora zasobów (URL).
Uwagi
GetFileURL
jest podobny do funkcji składowej CFileFind::GetFilePath , z tą różnicą, że zapewnia wynik w formacie adresu URL. Podobnie jak w przypadku CFileFind::GetFilePath
, wynik nie zawiera nazwy pliku. Na przykład file1.txt
element znajduje się w //moose/dir/file1.txt:
funkcji zwraca wartość ftp://moose/dir/
.
Zobacz też
Klasa CFileFind
Wykres hierarchii
Klasa CGopherFileFind
Klasa CInternetFile
Klasa CGopherFile
Klasa CHttpFile