/// <summary> /// Sube multiples archivos a un servidor FTP /// </summary> /// <param name="origenes"></param> /// <param name="destino"></param> public void subirArchivos(List <string> origenes, string destino) { foreach (string origen in origenes) { string nombreArchivo = Archivo.obtenerNombre(origen); if (subirArchivo(origen, destino)) { Console.WriteLine("se subió el archivo: " + nombreArchivo); } else { Console.WriteLine("no se subió el archivo: " + nombreArchivo); } } }
/// <summary> /// Descarga multiples archivos de un servidor /// </summary> /// <param name="carpetaOrigen"></param> /// <param name="carpetaRemota"></param> /// <param name="destinos"></param> public void descargarArchivos(string carpetaOrigen, string carpetaRemota, List <string> destinos) { foreach (string destino in destinos) { string nombreArchivo = Archivo.obtenerNombre(destino); if (descargarArchivo(carpetaOrigen, carpetaRemota, destino)) { Console.WriteLine("se descargó el archivo: " + nombreArchivo); } else { Console.WriteLine("no se descargó el archivo: " + nombreArchivo); } } }
/// <summary> /// Sube archivo a un servidor FTP /// </summary> /// <param name="rutaOrigen"></param> /// <param name="rutaDestino"></param> /// <returns>True o False</returns> public bool subirArchivo(string rutaOrigen, string rutaDestino) { string nombreArchivo = Archivo.obtenerNombre(rutaOrigen); string archivoRemoto = getRuta(rutaDestino, nombreArchivo); try { // objeto de peticion por ftp FtpWebRequest peticion = (FtpWebRequest)FtpWebRequest.Create(archivoRemoto); peticion.Proxy = null; peticion.UsePassive = true; peticion.UseBinary = true; peticion.KeepAlive = true; // metodo peticion.Method = WebRequestMethods.Ftp.UploadFile; // datos del usuario peticion.Credentials = new NetworkCredential(Usuario, Passsword); //Copiamos el contenido del archivo del equipo al que creamos en el server StreamReader lector = new StreamReader(rutaOrigen); byte[] contenidoArchivo = Encoding.UTF8.GetBytes(lector.ReadToEnd()); lector.Close(); peticion.ContentLength = contenidoArchivo.Length; //Generamos la peticion de Stream para poder transferir los datos Stream escritor = peticion.GetRequestStream(); escritor.Write(contenidoArchivo, 0, contenidoArchivo.Length); escritor.Close(); FtpWebResponse respuesta = (FtpWebResponse)peticion.GetResponse(); //Cerramos el hilo por el cual se subió el archivo respuesta.Close(); return(true); } catch (Exception ex) { return(false); } }