Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Pablo Videla en 30 Noviembre 2009, 22:38 pm



Título: Subir Carpetas enteras por ftp en C#[SOLUCIONADO]
Publicado por: Pablo Videla en 30 Noviembre 2009, 22:38 pm
Hola a todos, cómo estan, aqui les vengo a molestar nuevamente jajaja como muchas veces lo he hecho, bueno navegando por la red decidi buscar cómo subir archivos por ftp, funciona todo bien, pero busco cómo subir carpetas enteras y no logro conseguir ayuda, miren les dejo lo que tengo (osea lo que saque por internet) y diganme que podria agregar para subir carpetas enteras,gracias de antemano.


Código
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.IO;
  6. using System.Net;
  7.  
  8.  
  9. namespace FTP
  10. {
  11.    class Program
  12.    {
  13.        public void UploadFTP(string FilePath, string RemotePath, string Login, string Password)
  14.        {
  15.            using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
  16.            {
  17.                string url = Path.Combine(RemotePath, Path.GetFileName(FilePath));
  18.  
  19.                // Creo el objeto ftp
  20.                FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(url);
  21.  
  22.                // Fijo las credenciales, usuario y contraseña
  23.                ftp.Credentials = new NetworkCredential(Login, Password);
  24.  
  25.                // Le digo que no mantenga la conexión activa al terminar.
  26.                ftp.KeepAlive = false;
  27.  
  28.                // Indicamos que la operación es subir un archivo...
  29.                ftp.Method = WebRequestMethods.Ftp.UploadFile;
  30.  
  31.                // … en modo binario … (podria ser como ASCII)
  32.                ftp.UseBinary = true;
  33.  
  34.                // Indicamos la longitud total de lo que vamos a enviar.
  35.                ftp.ContentLength = fs.Length;
  36.  
  37.                // Desactivo cualquier posible proxy http.
  38.                // Ojo pues de saltar este paso podría usar
  39.                // un proxy configurado en iexplorer
  40.                ftp.Proxy = null;
  41.  
  42.                // Pongo el stream al inicio
  43.                fs.Position = 0;
  44.  
  45.                // Configuro el buffer a 2 KBytes
  46.                int buffLength = 2048;
  47.                byte[] buff = new byte[buffLength];
  48.  
  49.                int contentLen;
  50.  
  51.                // obtener el stream del socket sobre el que se va a escribir.
  52.                using (Stream strm = ftp.GetRequestStream())
  53.                {
  54.                    // Leer del buffer 2kb cada vez
  55.                    contentLen = fs.Read(buff, 0, buffLength);
  56.  
  57.                    // mientras haya datos en el buffer ….
  58.                    while (contentLen != 0)
  59.                    {
  60.                        // escribir en el stream de conexión
  61.                        //el contenido del stream del fichero
  62.                        strm.Write(buff, 0, contentLen);
  63.                        contentLen = fs.Read(buff, 0, buffLength);
  64.                    }
  65.                }
  66.            }
  67.        }
  68.  
  69.        static void Main(string[] args)
  70.        {
  71.            Program ftp = new Program();
  72.            string carpeta, carpetaremota, login, pass;
  73.  
  74.            carpeta=@"C:\archivo.txt";
  75.            carpetaremota = "ftp://ftp.tupagina.cl/public_html";
  76.            login = "tuusuario";
  77.            pass = "tuclave";
  78.  
  79.            try
  80.            {
  81.                ftp.UploadFTP(carpeta, carpetaremota, login, pass);
  82.            }
  83.            catch (Exception e)
  84.            {
  85.                Console.WriteLine("Error.. " +e.Message);
  86.            }
  87.            Console.WriteLine("Presione una tecla para terminar..");
  88.            Console.ReadKey();
  89.        }
  90.    }
  91. }
  92.  
  93.  
  94.  
  95.  


Título: Re: Subir Carpetas enteras por ftp en C#
Publicado por: raul338 en 30 Noviembre 2009, 22:47 pm
no se puede subir una carpeta literalmente.

Lo que se hace es subir archivo por archivo. CUando hay una subcarpeta, se envia un comando FTP que cree una subcarpeta con el mismo nombre y ahi se suben sus archivos....algo asi como "recursividad"....

No se cual sera el comando para crear una carpeta....pero puedes buscar en inet !! :laugh:


Título: Re: Subir Carpetas enteras por ftp en C#
Publicado por: Pablo Videla en 30 Noviembre 2009, 22:50 pm
Ok entiendo, seguire buscando, estoy atento a sus respuestas  ;)


Título: Re: Subir Carpetas enteras por ftp en C#
Publicado por: Pablo Videla en 30 Noviembre 2009, 23:10 pm
[OFF TOPIC]Disculpen el doble post, pero buscando en google me di cuenta que ya habia sido indexado el post XD osea se demoro como 30 minutos xD[/OFF TOPIC]


Título: Re: Subir Carpetas enteras por ftp en C#
Publicado por: raul338 en 30 Noviembre 2009, 23:38 pm
[OFF TOPIC]Disculpen el doble post, pero buscando en google me di cuenta que ya habia sido indexado el post XD osea se demoro como 30 minutos xD[/OFF TOPIC]

jaja...la proxima vez en vez de hacer doble post, usa el boton "modificar" :P


Título: Re: Subir Carpetas enteras por ftp en C#
Publicado por: Pablo Videla en 1 Diciembre 2009, 01:42 am
Solucionado, no pude subir la carpeta pero subi todos los archivos de dicha carpeta con un simple ciclo llamando al Directory.GetFileName ajjajaj ya veo como lo hago para crear la carpeta antes, gracias.


Título: Re: Subir Carpetas enteras por ftp en C#
Publicado por: anarquistadel89 en 2 Diciembre 2009, 00:58 am
Solucionado, no pude subir la carpeta pero subi todos los archivos de dicha carpeta con un simple ciclo llamando al Directory.GetFileName ajjajaj ya veo como lo hago para crear la carpeta antes, gracias.

Comprueba antes de subir si la carpeta existe, si no existe igual existe alguna manera de crearla. Luego ya seria cuestion de meter los ficheros dentro.

Hago una suposicion ya que no se si se pueden crear carpetas desde ahi  :-\

PD: Estaba pensando en crear un gestor ftp y tu codigo me viene de muerte  :xD