Descargando un fichero por FTP

by Valeriano Tortola 6. septiembre 2007 15:16

Siguiendo con el tema de Enviar un archivo por FTP y Enviar un Stream por FTP , vamos ahora con la descarga. También nos puede ser útil poder descargar archivos por FTP, para cosas como descargar copias de seguridad de un servidor ó realizar la copia en si misma, descargar archivos de servidores de forma sencilla y con autenticación, etc .. etc...

Ahí va un sencillo ejemplo:

public static void DownloadFTP(string LocalDirectory, string RemoteFile, 
                            string Login, string Password)
{
  // Creo el objeto ftp
  FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(RemoteFile);
 
  // Fijo las credenciales, usuario y contraseña
  ftp.Credentials = new NetworkCredential(Login, Password);
 
  // Le digo que no mantenga la conexión activa al terminar.
  ftp.KeepAlive = false;
 
  // Indicamos que la operación es descargar un archivo...
  ftp.Method = WebRequestMethods.Ftp.DownloadFile;
 
  // … en modo binario … (podria ser como ASCII)
  ftp.UseBinary = true;
 
  // Desactivo cualquier posible proxy http.
  // Ojo pues de saltar este paso podría usar 
  // un proxy configurado en iexplorer
  ftp.Proxy = null;
 
  // Activar si se dispone de SSL
  ftp.EnableSsl = false;
 
  // Configuro el buffer a 2 KBytes
  int buffLength = 2048;
  byte[] buff = new byte[buffLength];
  int contentLen;
 
  LocalDirectory = Path.Combine(LocalDirectory, Path.GetFileName(RemoteFile));
  using (FileStream fs = new FileStream(LocalDirectory, FileMode.Create, 
                                        FileAccess.Write, FileShare.None))
  using (Stream strm = ftp.GetResponse().GetResponseStream())
  {
    // Leer del buffer 2kb cada vez
    contentLen = strm.Read(buff, 0, buffLength);
 
    // mientras haya datos en el buffer...
    while (contentLen != 0)
    {
      // escribir en el stream del fichero
      //el contenido del stream de conexión
      fs.Write(buff, 0, contentLen);
      contentLen = strm.Read(buff, 0, buffLength);
    }
  }
}

Para usarlo es tan simple como los demás ejemplos:

DownloadFTP("C:\\MiCarpeta", "ftp://ftp.miservidor.net/Public/Naruto368.rar","miusuario" ,@"mipassword");

Tags: , , ,

.NET 2.0 | C# 2.0

Comentarios

06/09/2007 15:18:37 #

trackback

Trackback from vtortola

Descargando un fichero por FTP

vtortola |

05/10/2007 10:46:54 #

trackback

Trackback from vtortola

Descargando un fichero por FTP

vtortola |

07/10/2007 21:39:11 #

pingback

Pingback from elbruno.com

Cliente FTP asincrono - vtortola

elbruno.com |

Comentarios no permitidos