Класс CFtpFileFind

Помогает в поиске файлов Интернета на FTP-серверах.

Синтаксис

class CFtpFileFind : public CFileFind

Участники

Открытые конструкторы

Имя Описание
CFtpFileFind::CFtpFileFind Формирует объект CFtpFileFind.

Открытые методы

Имя Описание
CFtpFileFind::FindFile Находит файл на FTP-сервере.
CFtpFileFind::FindNextFile Продолжает поиск файла из предыдущего вызова FindFile.
CFtpFileFind::GetFileURL Получает URL-адрес, включая путь, найденного файла.

Замечания

CFtpFileFind включает функции-члены, которые начинают поиск, находят файл и возвращают URL-адрес или другие описательные сведения о файле.

Другие классы MFC, предназначенные для поиска в Интернете и локальном файле, включают CGopherFileFind и CFileFind. Вместе с CFtpFileFindэтими классами клиент предоставляет простой механизм для поиска определенных файлов независимо от протокола сервера или типа файлов (локального компьютера или удаленного сервера). Нет класса MFC для поиска на HTTP-серверах, так как HTTP не поддерживает прямую обработку файлов, необходимую для поиска.

Дополнительные сведения об использовании CFtpFileFind и других классах WinInet см. в статье "Интернет-программирование с помощью WinInet".

Пример

В следующем коде показано, как перечислить все файлы в текущем каталоге 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;
}

Иерархия наследования

CObject

CFileFind

CFtpFileFind

Требования

Заголовок: afxinet.h

CFtpFileFind::CFtpFileFind

Эта функция-член вызывается для создания CFtpFileFind объекта.

explicit CFtpFileFind(
    CFtpConnection* pConnection,
    DWORD_PTR dwContext = 1);

Параметры

p Подключение ion
Указатель на объект CFtpConnection. Вы можете получить FTP-подключение, вызвав CInternetSession::GetFtp Подключение ion.

Dwcontext
Идентификатор контекста CFtpFileFind для объекта. Дополнительные сведения см. в следующих замечаниях.

Замечания

Значение по умолчанию для dwContext отправляется MFC CFtpFileFind объекту из объекта CInternetSession , создавшего CFtpFileFind объект. Вы можете переопределить значение по умолчанию, чтобы задать идентификатор контекста для выбранного значения. Идентификатор контекста возвращается в CInternetSession::OnStatusCallback , чтобы предоставить состояние объекта, с которым он был идентифицирован. Дополнительные сведения об идентификаторе контекста см. в статье Internet First Steps: WinInet .

Пример

Ознакомьтесь с примером в обзоре класса ранее в этом разделе.

CFtpFileFind::FindFile

Вызовите эту функцию-член, чтобы найти FTP-файл.

virtual BOOL FindFile(
    LPCTSTR pstrName = NULL,
    DWORD dwFlags = INTERNET_FLAG_RELOAD);

Параметры

pstrName
Указатель на строку, содержащую имя файла для поиска. Если значение NULL, вызов будет выполнять дикий поиск карта (*).

dwFlags
Флаги, описывающие обработку этого сеанса. Эти флаги можно объединить с побитовой операторОМ OR (|) и следующим образом:

  • INTERNET_FLAG_RELOAD Получите данные из провода, даже если они кэшируются локально. Это флаг по умолчанию.

  • INTERNET_FLAG_DONT_CACHE Не кэшируйте данные локально или в шлюзах.

  • INTERNET_FLAG_RAW_DATA Переопределите значение по умолчанию, чтобы вернуть необработанные данные ( WIN32_FIND_DATA структуры для FTP).

  • INTERNET_FLAG_SECURE Защищает транзакции на проводе с помощью уровня безопасных сокетов или РСТ. Этот флаг применяется только к HTTP-запросам.

  • INTERNET_FLAG_EXISTING_CONNECT По возможности повторно используйте существующие подключения к серверу для новых FindFile запросов вместо создания нового сеанса для каждого запроса.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0. Чтобы получить расширенные сведения об ошибке, вызовите функцию Win32 GetLastError.

Замечания

После вызова FindFile для получения первого FTP-файла можно вызвать FindNextFile , чтобы получить последующие FTP-файлы.

Пример

См. предыдущий пример в этом разделе.

CFtpFileFind::FindNextFile

Вызовите эту функцию-член, чтобы продолжить поиск файлов, начинающийся с вызова функции-члена FindFile .

virtual BOOL FindNextFile();

Возвращаемое значение

Ненулевое значение, если есть больше файлов; ноль, если найденный файл является последним в каталоге или произошла ошибка. Чтобы получить расширенные сведения об ошибке, вызовите функцию Win32 GetLastError. Если найденный файл является последним файлом в каталоге или если не удается найти соответствующие файлы, GetLastError функция возвращает ERROR_NO_MORE_FILES.

Замечания

Перед вызовом любой функции атрибута необходимо вызвать эту функцию по крайней мере один раз (см. раздел CFileFind::FindNextFile).

FindNextFile упаковывает функцию Win32 FindNextFile.

Пример

См. пример, приведенный ранее в этом разделе.

CFtpFileFind::GetFileURL

Вызовите эту функцию-член, чтобы получить URL-адрес указанного файла.

CString GetFileURL() const;

Возвращаемое значение

Файл и путь к указателю универсального ресурса (URL-адрес).

Замечания

GetFileURL аналогично функции-члену CFileFind::GetFilePath , за исключением того, что она предоставляет результат в формате URL-адреса. Как и в CFileFind::GetFilePathслучае, результат не включает имя файла. Например, file1.txt находится в //moose/dir/file1.txt: возвращаемом ftp://moose/dir/объекте.

См. также

Класс CFileFind
Диаграмма иерархии
Класс CGopherFileFind
Класс CInternetFile
Класс CGopherFile
Класс CHttpFile