Compartir vía


CFtpFileFind (clase)

Ayuda en las búsquedas del archivo de Internet de servidores FTP.

Sintaxis

class CFtpFileFind : public CFileFind

Miembros

Constructores públicos

Nombre Descripción
CFtpFileFind::CFtpFileFind Construye un objeto CFtpFileFind.

Métodos públicos

Nombre Descripción
CFtpFileFind::FindFile Busca un archivo en un servidor FTP.
CFtpFileFind::FindNextFile Continúa una búsqueda de archivos desde una llamada anterior a FindFile.
CFtpFileFind::GetFileURL Obtiene la dirección URL, incluida la ruta de acceso, del archivo encontrado.

Comentarios

CFtpFileFind incluye funciones miembro que inician una búsqueda, localizan un archivo y devuelven la dirección URL u otra información descriptiva sobre el archivo.

Otras clases MFC diseñadas para Internet y el archivo local buscado incluyen CGopherFileFind y CFileFind. Junto con CFtpFileFind, estas clases proporcionan un mecanismo sin problemas para que el cliente encuentre archivos específicos, independientemente del protocolo de servidor o del tipo de archivo (ya sea una máquina local o un servidor remoto). No hay ninguna clase MFC para buscar en servidores HTTP porque HTTP no admite la manipulación directa de archivos necesaria para las búsquedas.

Para más información sobre cómo usar CFtpFileFind y las otras clases de WinInet, consulte el artículo Programación de Internet con WinInet.

Ejemplo

En el código siguiente se muestra cómo enumerar todos los archivos del directorio actual del 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;
}

Jerarquía de herencia

CObject

CFileFind

CFtpFileFind

Requisitos

Encabezado: afxinet.h

CFtpFileFind::CFtpFileFind

Se llama a esta función miembro para construir un objeto CFtpFileFind.

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

Parámetros

pConnection
Puntero a un objeto CFtpConnection . Para obtener una conexión FTP, llame a CInternetSession::GetFtpConnection.

dwContext
Identificador de contexto del objeto CFtpFileFind. Para más información, consulte la sección Comentarios que se muestra más adelante.

Comentarios

MFC envía el valor predeterminado de dwContext al objeto CFtpFileFind desde el objeto CInternetSession que creó el objeto CFtpFileFind. Reemplace el valor predeterminado para establecer el identificador de contexto en un valor que desee. El identificador de contexto se devuelve a CInternetSession::OnStatusCallback para proporcionar el estado del objeto con el que se identifica. Vea el artículo Internet First Steps: WinInet para obtener más información sobre el identificador de contexto.

Ejemplo

Consulte el ejemplo de la información general de la clase anteriormente en este tema.

CFtpFileFind::FindFile

Llame a esta función miembro para buscar un archivo FTP.

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

Parámetros

pstrName
Puntero a una cadena que contiene el nombre del archivo que se va a buscar. Si es NULL, la llamada realizará una búsqueda con caracteres comodín (*).

dwFlags
Marcas que describen cómo controlar esta sesión. Estas marcas se pueden combinar con el operador OR bit a bit (|) y son las siguientes:

  • INTERNET_FLAG_RELOAD Obtener los datos de la conexión incluso si está almacenado localmente en caché. Esta es la marca predeterminada.

  • INTERNET_FLAG_DONT_CACHE No almacene en caché los datos, ya sea localmente o en ninguna puerta de enlace.

  • INTERNET_FLAG_RAW_DATA Invalide el valor predeterminado para devolver los datos sin procesar (estructuras WIN32_FIND_DATA para FTP).

  • INTERNET_FLAG_SECURE Protege las transacciones en la conexión con capa de sockets seguros o PCT. Esta marca solo se aplica a las solicitudes HTTP.

  • INTERNET_FLAG_EXISTING_CONNECT Si es posible, vuelva a usar las conexiones existentes al servidor para las nuevas solicitudes FindFile en lugar de crear una nueva sesión para cada solicitud.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero. Para más información de los errores, llame a la función Win32 GetLastError.

Comentarios

Después de llamar a FindFile para recuperar el primer archivo FTP, puede llamar a FindNextFile para recuperar los archivos FTP posteriores.

Ejemplo

Consulte el ejemplo anterior en este tema.

CFtpFileFind::FindNextFile

Llame a esta función miembro para continuar una búsqueda de archivos iniciada con una llamada a la función miembro FindFile.

virtual BOOL FindNextFile();

Valor devuelto

Distinto de cero si hay más archivos; cero si el archivo encontrado es el último del directorio o si se produjo un error. Para más información de los errores, llame a la función Win32 GetLastError. Si el archivo encontrado es el último archivo del directorio o si no se encuentra ningún archivo coincidente, la función GetLastError devuelve ERROR_NO_MORE_FILES.

Comentarios

Debe llamar a esta función al menos una vez antes de llamar a cualquier función de atributo (consulte CFileFind::FindNextFile).

FindNextFile ajusta la función de Win32 FindNextFile.

Ejemplo

Consulte el ejemplo que se muestra más adelante en este tema.

CFtpFileFind::GetFileURL

Llame a esta función miembro para obtener la dirección URL del archivo especificado.

CString GetFileURL() const;

Valor devuelto

Archivo y ruta de acceso del localizador de recursos universales (URL).

Comentarios

GetFileURL es similar a la función miembro CFileFind::GetFilePath, salvo que proporciona el resultado en formato de dirección URL. Al igual que con CFileFind::GetFilePath, el resultado no incluye el nombre de archivo. Por ejemplo, file1.txt ubicado en //moose/dir/file1.txt: devuelve ftp://moose/dir/.

Consulte también

CFileFind (clase)
Gráfico de jerarquías
CGopherFileFind (clase)
CInternetFile (clase)
CGopherFile (clase)
CHttpFile (clase)