Esempio n. 1
0
        /// <summary> Descargar un fichero al servidor Ftp. </summary>
        ///
        /// <param name="remoteFile"> Nombre del fichero remoto. </param>
        /// <param name="localFile"> Nombre del fichero local. </param>
        /// <param name="crearFichero"> Sobreescribir destino si ya existe. </param>
        ///
        /// <returns> Resultado (S/N/C) </returns>
        ///
        public Char FtpDownloadFile(string remoteFile, string localFile, int crearFichero = (int)FileMode.Create)
        {
            FileStream localFileStream;

            byte[] byteBuffer;
            int    bytesLeidos;

            Resultado = 'N';

            try
            {
                if (String.IsNullOrEmpty(FTPHost) || string.IsNullOrEmpty(FTPUser) || FTPPwd == null)
                {
                    UsrError  = "KO - Faltan parámetros de conexión al Host Ftp";
                    UsrErrorC = -1;
                    Resultado = 'N';

                    return(Resultado);
                }

                // Conexión con el Host Ftp.
                FtpRequest             = (FtpWebRequest)FtpWebRequest.Create(FTPHost + "/" + remoteFile);
                FtpRequest.Credentials = new NetworkCredential(FTPUser, FTPPwd);
                FtpRequest.Method      = WebRequestMethods.Ftp.DownloadFile;

                // Canal de comunicación con el Host Ftp.
                FtpResponse = (FtpWebResponse)FtpRequest.GetResponse();

                // Retorno de comunicación con el Host Ftp.
                FtpFileStream = FtpResponse.GetResponseStream();

                // Canal de comunicación con el fichero local.
                localFileStream = new FileStream(localFile, FileMode.Create);
                byteBuffer      = new byte[_BYTE_BUFFER];

                // Leer datos del fichero remoto y grabar en fichero local.
                bytesLeidos = FtpFileStream.Read(byteBuffer, 0, _BYTE_BUFFER);

                while (bytesLeidos > 0)
                {
                    localFileStream.Write(byteBuffer, 0, _BYTE_BUFFER);
                    bytesLeidos = FtpFileStream.Read(byteBuffer, 0, _BYTE_BUFFER);
                }

                // Cerrar canales de comunicación Ftp.
                localFileStream.Close();
                FtpFileStream.Close();
                FtpRequest = null;
                FtpResponse.Close();

                Resultado = 'S';
                UsrError  = "OK";
            }

            catch (Exception ex)
            {
                // Error de Ftp.
                UsrErrorC = ex.HResult;
                UsrError  = ex.Message;
                UsrErrorE = ex.StackTrace;

                Resultado = 'C';
            }

            return(Resultado);
        }
Esempio n. 2
0
        //------------------------------------------------------------------
        // Métodos públicos de la clase.
        //------------------------------------------------------------------

        /// <summary>
        ///
        /// </summary>
        /// <param name="remoteFile"> Nombre del fichero remoto. </param>
        ///
        /// <returns> Resultado (S/N/C) </returns>
        ///
        public Char FtpFileExists(string remoteFile)
        {
            // string fileInfo;                     Innecesario.

            Resultado = 'N';

            try
            {
                if (String.IsNullOrEmpty(FTPHost) || string.IsNullOrEmpty(FTPUser) || FTPPwd == null)
                {
                    UsrError  = "KO - Faltan parámetros de conexión al Host Ftp";
                    UsrErrorC = -1;
                    Resultado = 'N';

                    return(Resultado);
                }

                FtpRequest             = (FtpWebRequest)FtpWebRequest.Create(FTPHost + "/" + remoteFile);
                FtpRequest.Credentials = new NetworkCredential(FTPUser, FTPPwd);
                FtpRequest.Method      = WebRequestMethods.Ftp.GetDateTimestamp;

                // Canal de comunicación con el Host Ftp.
                FtpResponse = (FtpWebResponse)FtpRequest.GetResponse();

                // Retorno de comunicación con el Host Ftp.
                FtpFileStream = FtpResponse.GetResponseStream();

                // Canal de lectura del Host Ftp. - Innecesario.
                // FtpStreamReader = new StreamReader(FtpFileStream);
                // fileInfo = FtpStreamReader.ReadToEnd();

                // Cerrar canales de comunicación Ftp.
                FtpFileStream.Close();
                FtpRequest = null;
                FtpResponse.Close();

                Resultado = 'S';
                UsrError  = "OK";
            }

            catch (WebException ex) when(ex.Status.ToString() == "ProtocolError")
            {
                // Error de Ftp.
                UsrErrorC = ex.HResult;
                UsrError  = ex.Message;
                UsrErrorE = ex.StackTrace;

                Resultado = 'N';
            }

            catch (Exception ex)
            {
                // Error de programa.
                UsrErrorC = ex.HResult;
                UsrError  = ex.Message;
                UsrErrorE = ex.StackTrace;

                Resultado = 'C';
            }

            return(Resultado);
        }