Classe CFtpFileFind

Ajuda em pesquisas de arquivos da Internet de servidores FTP.

Sintaxe

class CFtpFileFind : public CFileFind

Membros

Construtores públicos

Nome Descrição
CFtpFileFind::CFtpFileFind Constrói um objeto CFtpFileFind.

Métodos públicos

Nome Descrição
CFtpFileFind::FindFile Localiza um arquivo em um servidor FTP.
CFtpFileFind::FindNextFile Continua uma pesquisa de arquivo de uma chamada anterior para FindFile.
CFtpFileFind::GetFileURL Obtém a URL, incluindo o caminho, do arquivo localizado.

Comentários

CFtpFileFind inclui as funções membro que iniciam uma pesquisa, localizam um arquivo e retornam a URL ou outras informações descritivas sobre o arquivo.

Outras classes de MFC projetadas para Internet e arquivos locais pesquisados incluem CGopherFileFind e CFileFind. Juntamente com CFtpFileFind, essas classes fornecem um mecanismo contínuo para o cliente localizar os arquivos específicos, independentemente do protocolo do servidor ou do tipo de arquivo (um computador local ou um servidor remoto). Não há classe de MFC para pesquisa em servidores HTTP porque o HTTP não dá suporte à manipulação direta de arquivos necessária para pesquisas.

Para obter mais informações sobre como usar CFtpFileFind e outras classes de WinInet, consulte o artigo Programação de Internet com WinInet.

Exemplo

O código a seguir demonstra como enumerar todos os arquivos no diretório atual do servidor 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;
}

Hierarquia de herança

CObject

CFileFind

CFtpFileFind

Requisitos

Cabeçalho: afxinet.h

CFtpFileFind::CFtpFileFind

Essa função membro é chamada para construir um objeto CFtpFileFind.

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

Parâmetros

pConnection
Um ponteiro para um objeto CFtpConnection. É possível obter uma conexão de FTP chamando CInternetSession::GetFtpConnection.

dwContext
O identificador de contexto do objeto CFtpFileFind. Para obter mais informações, consulte os comentários a seguir.

Comentários

O valor padrão para dwContext é enviado pelo MFC para o objeto CFtpFileFind do objeto CInternetSession que criou o objeto CFtpFileFind. É possível substituir o padrão para definir o identificador de contexto para um valor de sua escolha. O identificador de contexto retorna para CInternetSession::OnStatusCallback para fornecer o status do objeto com o qual é identificado. Confira o artigo Primeiras etapas da Internet: WinInet para mais informações sobre o identificador de contexto.

Exemplo

Consulte o exemplo na visão geral da classe abordado anteriormente neste tópico.

CFtpFileFind::FindFile

Chame essa função membro para localizar um arquivo FTP.

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

Parâmetros

pstrName
Um ponteiro para uma cadeia de caracteres contendo o nome do arquivo a ser localizado. Se for NULL, a chamada fará uma pesquisa com curinga (*).

dwFlags
Os sinalizadores que descrevem como lidar com essa sessão. Esses sinalizadores podem ser combinados com o operador OR bit a bit (|) e são os seguintes:

  • INTERNET_FLAG_RELOAD Obtém os dados de transmissão, mesmo se estiverem armazenados em cache localmente. Esse é o sinalizador padrão.

  • INTERNET_FLAG_DONT_CACHE Não armazena os dados em cache, localmente ou em qualquer gateway.

  • INTERNET_FLAG_RAW_DATA Substitui o padrão para retornar os dados brutos ( estruturas WIN32_FIND_DATA para FTP).

  • INTERNET_FLAG_SECURE Protege as transações na transmissão com Protocolo SSL ou PCT. Esse sinalizador é aplicável apenas para solicitações HTTP.

  • INTERNET_FLAG_EXISTING_CONNECT Se possível, reutilize as conexões existentes com o servidor para novas solicitações FindFile em vez de criar uma nova sessão para cada solicitação.

Valor de Devolução

Diferente de zero se tiver êxito; caso contrário, 0. Para obter informações de erro estendidas, chame a função GetLastError do Win32.

Comentários

Após chamar FindFile para recuperar o primeiro arquivo FTP, será possível chamar FindNextFile para recuperar arquivos FTP subsequentes.

Exemplo

Consulte o exemplo anterior neste tópico.

CFtpFileFind::FindNextFile

Chame essa função membro para continuar uma pesquisa de arquivo iniciada com uma chamada para a função membro FindFile.

virtual BOOL FindNextFile();

Valor de Devolução

Diferente de zero se houver mais arquivos, zero se o arquivo encontrado for o último no diretório ou se ocorreu um erro. Para obter informações de erro estendidas, chame a função GetLastError do Win32. Se o arquivo encontrado for o último arquivo no diretório ou se nenhum arquivo correspondente puder ser encontrado, a função GetLastError retornará ERROR_NO_MORE_FILES.

Comentários

Chame essa função pelo menos uma vez antes de chamar qualquer função de atributo (consulte CFileFind::FindNextFile).

FindNextFile encapsula a função do Win32 FindNextFile.

Exemplo

Consulte a o exemplo anterior neste tópico.

CFtpFileFind::GetFileURL

Chame essa função membro para obter a URL do arquivo especificado.

CString GetFileURL() const;

Valor de Devolução

O arquivo e o caminho de URL (Uniform Resource Locator).

Comentários

GetFileURL é semelhante à função membro CFileFind::GetFilePath, exceto que fornece o resultado no formato de URL. Assim como CFileFind::GetFilePath, o resultado não inclui o nome do arquivo. Por exemplo, file1.txt localizado em //moose/dir/file1.txt: retorna ftp://moose/dir/.

Confira também

Classe CFileFind
Gráfico da hierarquia
Classe CGopherFileFind
Classe CInternetFile
Classe CGopherFile
Classe CHttpFile