Udostępnij za pośrednictwem


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 CFtpFileFindte 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

Obiekt CObject

CFileFind

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 nowych FindFile żą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