Класс 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;
}
Иерархия наследования
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