Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Помогает в поиске файлов Интернета на 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;
}
Иерархия наследования
CFtpFileFind
Требования
Заголовок: afxinet.h
CFtpFileFind::CFtpFileFind
Эта функция-член вызывается для создания CFtpFileFind объекта.
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
Параметры
pConnection
Указатель на объект CFtpConnection. Вы можете получить FTP-подключение, вызвав CInternetSession::GetFtpConnection.
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