none
Subir a FTP un archivo remoto RRS feed

  • Pregunta

  • Buen día, necesito subir un archivo a FTP y descargarlo en mi PC, el archivo se encuentra en el servidor donde está configurado el FTP, alguna idea?
    viernes, 12 de julio de 2019 18:46

Todas las respuestas

  • hola

    en .net tienes las clase FtpWebRequest para realizar estas operaciones

    How to: Download Files with FTP

    How to: Upload files with FTP

    en el link hay un ejemplo completo de como usa la funcionalidad de la clase

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 13 de julio de 2019 4:42
  • Hola Jorge Octavio Núñez:

    Puedes utilizar FtpWebRequest.

    Para subir....

            public int UploadFile(string _FileName, string _UploadPath, string _FTPUser, string _FTPPass, int bufferParametro)
            {
                Uri conexion = new Uri(_UploadPath);
    
                System.IO.FileInfo _FileInfo = new System.IO.FileInfo(_FileName);
                System.Net.FtpWebRequest ftpWebReq = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(new Uri(_UploadPath));
                ftpWebReq.Credentials = new System.Net.NetworkCredential(_FTPUser, _FTPPass);
                ftpWebReq.KeepAlive = true;
                ftpWebReq.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
                ftpWebReq.UsePassive = true;
                ftpWebReq.UseBinary = true;
                ftpWebReq.ContentLength = _FileInfo.Length;
                // The buffer size is set to 2kb
                int buffLength = bufferParametro;
                byte[] buff = new byte[buffLength];
                // Opens a file stream (System.IO.FileStream) to read the file to be uploaded
                System.IO.FileStream fileStream = _FileInfo.OpenRead();
                try
                {
                    System.IO.Stream stream = ftpWebReq.GetRequestStream();
                    int contentLen = fileStream.Read(buff, 0, buffLength);
                    while (contentLen != 0)
                    {
                        stream.Write(buff, 0, contentLen);
                        contentLen = fileStream.Read(buff, 0, buffLength);
                    }
                    stream.Close();
                    stream.Dispose();
                    fileStream.Close();
                    fileStream.Dispose();
                    return 0;
                }
                catch (Exception a)
                {
    // Manejar la excepción a conveniencia
                    throw a;
                }
            }
    

    Para descargar

          public void downloadFile(string servidor, string usuario, string password, string archivoOrigen, string carpetaDestino, int bufferdes)
            {
                try
                {
                    FtpWebRequest reqFTP;
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(servidor + archivoOrigen);
                    reqFTP.Credentials = new NetworkCredential(usuario, password);
                    reqFTP.KeepAlive = false;
                    reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                    reqFTP.UseBinary = true;
                    reqFTP.Proxy = null;
                    reqFTP.UsePassive = true;
                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                    Stream responseStream = response.GetResponseStream();
                    FileStream writeStream = new FileStream(@carpetaDestino, FileMode.Create);
                    int Length = bufferdes;
                    Byte[] buffer = new Byte[Length];
                    int bytesRead = responseStream.Read(buffer, 0, Length);
                    while (bytesRead > 0)
                    {
                        writeStream.Write(buffer, 0, bytesRead);
                        bytesRead = responseStream.Read(buffer, 0, Length);
                    }
                    writeStream.Close();
                    response.Close();
                }
                catch (WebException wEx)
                {
                    // manejar excepción a conveniencia
                    throw wEx;
                }
                catch (Exception ex)
                {
                    // manejar excepción a conveniencia
                    throw ex;
    
                }
    
            }

    Con FtpWebRequest puedes subir y descargar archivos de cualquier tamaño.

    Muy importante es que las rutas pueden ser caseSensitive.

    FtpWebRequest

    https://docs.microsoft.com/es-es/dotnet/api/system.net.ftpwebrequest?view=netframework-4.8

    • Propuesto como respuesta eRiver1 lunes, 15 de julio de 2019 9:02
    sábado, 13 de julio de 2019 6:49
  • Debido a que no hemos recibido alguna notificación que aún se esté presentando el problema que enuncia en vuestra consulta y que la respuesta provista provee un amplio panorama y campo de acción sobre tu duda; nos gustaría considerar la misma como resuelta debido a la respuesta apropiada proporcionada  y así proceder a calificar la misma como respuesta.

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guía para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: Consejos de Desarrollo en ASP.NET

     

     

    Gracias por usar los foros de TechNet.

    Erick Rivera

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    viernes, 26 de julio de 2019 15:04