none
crear una pequeña aplicacion FTP (ayuda!) RRS feed

  • Pregunta

  • Buenos días o tardes
    Necesito ayuda para crear una pequeña aplicación con funciones FTP. (en visual estudio 2008, aunque tambien tengo visualbasic 6.0)

    La idea es:

    Un pequeño programilla (un “form con varios botones) y que cada uno descargue de un sitio ftp distinto, 4 carpetas completas (de cada sitio ftp) y las descargue a una ruta concreta del PC LOCAL.

    Y q cuando descargue (si es necesario actualizar las carpetas del PC LOCAL) sea visible una barra de progreso (“progressbar”) y al final de la descarga lance un “form” con el mensaje descarga completada “sus ficheros están actualizados”.

    El motivo:

    Es para mantener unas carpetas de un PC-LOCAL actualizadas con las carpetas que hay en un FTP remoto. (siempre lo que hay en el ftp remoto esta mas actual que lo que hay en el pc local)

    Nota: se manejarme con el visual estudio 2008, pero de códigos estoy “pegada” os agradecería muschísimo esta ayuda. Me facilitaría muchisímo el trabajo diario.

    También agradecería un tutorial o algo sobre comandos para ftp para ampliar el programa yo misma en caso necesario (como borrar carpetas, hacer copias de seguridad de una carpeta a otra, copia carpetas, eliminar carpetas etc…)

    Mil gracias de antemano!
    martes, 27 de octubre de 2009 10:50

Todas las respuestas

  • Hola sandra,

    aqui tienes un ejemplo (puedes descargar el código incluso) de una aplicación que usa FTP desarrollada con .NET:

    http://www.codeproject.com/KB/IP/FTPWinFormClient.aspx


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    martes, 27 de octubre de 2009 11:10
  • Hola..

    Aquí tienes un ejemplo que encapsula toda la comunicación via FTP y te hace la vida más fácil ;)

    http://www.codeproject.com/KB/IP/ftplib.aspx

    Pero si quieres entender cómo funciona todo, socket, stream y todo lo que lleva realizar una conexión via FTP, puedes leer este otro artículo:

    http://ondotnet.com/pub/a/dotnet/2004/05/10/ftpdotnet.htm

    (ambos en ingles)

    Salu2

    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    martes, 27 de octubre de 2009 11:14
    Moderador
  • ambas respuestas son interesantes, pero en ambas respuestas sigo teniendo el mismo problema...

    los dos ejemplos, hay q poner el nombre de un archivo para bajarselo.

    pero lo que quiero es bajar todo el contenido de una carpeta (admite esto el comodin [*.*], como en msdos?), y sino es as,...i como hago para que directamente se descargue todo el contenido de la carpeta "X"

    es q todo lo q encuentro es similiar a lo que me poneis, hay que conocer el nombre del archivo para descargarselo, el obetivo de mi programa no es conocer el contenido... sino descargarse (todo el contenido de una carpeta sin conocer los archivos que estan en ella) para asi automatizar esa tarea todos los días.

    alguna idea al respecto?

    martes, 27 de octubre de 2009 15:00
  • hola sandra2000,

    a ver, lo que deberías hacer es lanzar el comando FTP "ls" en la carpeta que contiene los archivos a descargar y, por cada archivo que te va a devolver esa lista, hacer un "get".

    Con los ejemplos que te hemos pasado, puedes ver cómo lanzar los comandos FTP de forma fácil.

    Aqui tienes una lista con todos los comandos del protocolo FTP:

    http://www.cs.colostate.edu/helpdocs/ftp.html


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    martes, 27 de octubre de 2009 15:28
  • Hola..

    Tal como comenta Javier.. no hay un comando que te permita hacer un download de todos los archivos que hay en una carpeta... ese proceso lo tienes que programar a partir de lo que te hemos enviado..

    Haces un ls o dir del contenido de la carpeta... lo cual te retorna el listado de archivos que están contenidos en ella.. y luego vas haciendo un download de uno por uno... o si aplicas multihilos... podrás hacer un download de más de uno..


    Salu2

    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    martes, 27 de octubre de 2009 15:31
    Moderador
  • no comprendo muy bien...

    no es q no os entienda, es q no entiendo porque no se pueden descargar todos los archivos que hay en una carpeta. Estuve intentado hacer "batch" con los comandos ftp para msdos, y no huvo manera de bajar todos los archivos de una carpeta.

    estuve practicando con el comando "mget" q se supone q sirve para bajar todos los archivos de una carpeta, pero no hubo manera de hacerlos bajar, de 20 intentos q hice solo en una ocasion los bajo todos, el resto siempre daba errores, baja dos o tres archivos y se quedaba cortado

    hice 2 archivos (un bat y txt)

    el bat: (el host lo ponía sin los corchetes)

    ftp -s:datosftp.txt [host]

    en el txt (datosftp.txt)

    user
    password
    lcd c:\temp
    cd /principal/normativa
    mget *
    

    pues bien...esto q debería funcionar no había manera de que lo hiciera correctamente, siempre se dejaba archivos en ftp

    lo q me decis es q use el comando ls? me podrías poner un ejemplo y decirme ¿porque no funcionaba el batch que hice?

    martes, 27 de octubre de 2009 15:56
  • Ummm.. perdona Sandra..

    No sabía de la existencia del comando mget... ;)

    Supuestamente usando este comando los deberías poder bajar todos..

    mget:
    Copies one or more remote files to the local computer using the current file transfer type.
    Syntax: mget remote-files [ ...]

    Parameter(s):
    remote-files - Specifies the remote file(s) to copy to the local computer.

    Qué error te dió el resto de las veces que lo intentantes?

    Salu2


    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    martes, 27 de octubre de 2009 16:05
    Moderador
  • al menos directamente desde un batch no lo conseguí, ahora mismo no tengo presente el error, pero descargaba dos archivos de 5 y se quedaba esperando una respuesta...

    en cuanto tenga un rato dejo una captura de la consola de comandos.

    pero de los ejemplos que me habeis enviado, en que parte del codigo aplicaría el "mget" (ahí es donde me pierdo)

    si lo q pido no debe ser dificil solo debe necesitar una linea de codigo...

    mira lo q pido es muy simple, y tampoco quiero meterme mucho en el mundo de la programación solo quiero hacer una simple aplicacion para repartir con mis alumnos.

    en un ftp del Instituto siempre subo una serie de documentos (los alumnos no saben que documentos hay, ní cuantos son, solo quiero que con un simple "form" y un boton (con solo pulsar este, se descargue todo a una carpeta de sus PCs)

    y así mantengan siempre actualizada la carpeta con los apuntes q les envío.

    si me pudieras echar una mano os lo agradecería

    martes, 27 de octubre de 2009 16:46
  • hola

    Si la idea es simplemente distribuir informacion podrias aconsejar que utilicen algun software de ftp para pdoer acceder a la lista de archivos y poder visualizarlo

    FileZilla la version cliente podria ser una alternativa al cliente FTP

    de esta forma tanti tu como los alumnos podrias acceder a los archivos que publicas

    Easta aplciacion es similar al Explorador de windows en donde veras el arbol de carpeta publicado en el ftp, pudiendo subir o descargar archivos

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 27 de octubre de 2009 16:53
  • gracias Leandro, pero eso es lo que ahora mismo tenemos todos (cada uno su cliente ftp preferido) pero no quiero eso, quiero algo simple, que con un simple boton se actualice la carpeta local de cada uno.

    tan sencillo como eso... te preguntarás porque... pues simplemente porque algunos me ponen la excusa de que se hacen un lio con los clientes ftp y que les toca pedir los archivos a sus compañeros, en fin... todo tipo de excusas... ya saben como son los jovenes...

    con un botn q solo tengan q apretarlo y sus archivos quedan automaticamente actualizados ¿q excusa tendrían?

    comprendes ahora?
    martes, 27 de octubre de 2009 21:37
  • jajaja.. los alumnos.. jajajaja me recuerda mis viejas justificaciones.. jajajajaja. no hice la tarea porque no tenía lapiz.. jajajaja


    Perdona Sandra.. pero me ha dado mucha gracia tu mensaje..

    Mira.. al parecer hay otro deseando que los alumnos no le pongan justificaciones..

    http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/079fb811-3c55-4959-85c4-677e4b20bea3

    Aquí tienes lo que buscas.. ;)

    Fíjate.. al final no usan un comando que les de todos los archivos.. sino que hacen lo que te recomendabamos al inicio.. leen todos los archivos que hay en un directorio y los van bajando uno a uno..

    Si tienes alguna duda con el código no dudes en preguntar..

    Saludos

    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    martes, 27 de octubre de 2009 22:20
    Moderador
  • hola

    por ahi entonces este otro post realiza una pregunta similar
    Como redireccionar a un archivo FTP

    como veras hay clases el framework de ,net que te peude ayudar, alli mismo hay otro link con un ejemplo de una aplicacion simple que utilzia estos librerias


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 27 de octubre de 2009 22:40
  • Omar, parece q eso es lo que ando buscando, pero no consigo hacerlo funcionar... ¿serías tan amable de meterlo en un proyecto de visual estudio 2008 para q me sea más fácil?

    Leandro, tu link no funciona

    jueves, 29 de octubre de 2009 10:10
  • hola

    que raro que no funcione yo puedo abrirlo sin problemas, te paso el link simple

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/d8a4e02b-c674-4161-ace6-b16fa3eea40f


    con respecto al ejemplo de Omar cual es exactamente el problema que da el codigo, simplemente no hace nada o muestra algun error?

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 29 de octubre de 2009 12:39
  • vamos a ver si me explico...

    copio el codigo y lo pego en la ventana form1.vb pero visual estudio2008 me dice q tiene 102 errores (la mayoría de ellos son por los corchetes y los puntos y coma), asi q no se q algo hago mal... (mas bien segruo q lo hago todo mal)

    si fuerais tan amables de metermelo en un proyecto de visual 2008 vería mas claro como lo habeis hecho o explicarme como hacerlo...

    ...primeramente que debo elegir al abrir el proyecto ¿aplicacion de windows form, ó biblioteca de clases ó aplicación WPF ó aplicacion de consola?

    y una vez elegido el proyecto no entiendo bien como debo aplicar el codigo, claro aqui todos entendeis de sobra el asunto y una se queda fuera de sitio, sé q pido mucho, pero intentar echarme una mano haber si saco algo en claro.



    jueves, 29 de octubre de 2009 15:55
  • hola

    consulta en que lenguaje estas programando es c# ?

    veo que dices visual 2008, pero note que en el primer post comentaste vb6, por eso me queda la dudad, y ahora que dices los de los punto y coma por ahi se debe as que programas en vb.net ?

    te comento esto porque el codigo del link de Omar es c#, no te funcionara sino lo conviertes.

    confirma que lenguaje usas asi vemos de pasarte un ejemplo en ese lenguaje

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 29 de octubre de 2009 16:02
  • el lenguaje es visualbasic.net en visual estudio 2008

    (hice referencia al visual basic 6.0 pero este no lo manejo nada)
    jueves, 29 de octubre de 2009 21:29
  • haber conseguí pasar el codico de c# a net

    Archivos As String = GetFileList () 
     Archivo As String 
     Por cada fichero en archivos 
        Descargar (archivo) 
     Archivo siguiente 
    
    
     La Función Pública GetFileList () As String () 
         Dim DownloadFile () As String 
         Resultado = new StringBuilder () 
         Respuesta As WebResponse = Nothing 
         Lector As StreamReader = Nothing 
         Intentar 
             Como FtpWebRequest Dim reqFTP 
             = CType reqFTP (FtpWebRequest.Create (New Uri ( "ftp://" + ftpServerIP + "/")), FtpWebRequest) 
             reqFTP.UseBinary = True 
             reqFTP.Credentials = New NetworkCredential (ftpUserID, FTPPassword) 
             = reqFTP.Method WebRequestMethods.Ftp.ListDirectory 
             reqFTP.Proxy = Nothing 
             reqFTP.KeepAlive = False 
             reqFTP.UsePassive = False 
             respuesta reqFTP.GetResponse = () 
             reader = New StreamReader (response.GetResponseStream ()) 
             Línea As String = reader.ReadLine () 
             Si bien no (línea Is Nothing) 
                 result.Append (línea) 
                 result.Append (ControlChars.Lf) 
                 línea reader.ReadLine = () 
             Fin Mientras 
             'Para quitar la n final' \ ' 
             result.Remove (result.ToString (). IndexOf (ControlChars.Lf), 1) 
             Volver result.ToString (). Split (ControlChars.Lf) 
         Catch ex As Exception 
             If Not (reader Is Nothing) Then 
                 reader.Close () 
             End If 
             Si no (respuesta Is Nothing) Then 
                 response.Close () 
             End If 
             downloadFiles = Nothing 
             DownloadFiles Volver 
         End Try 
     GetFileList End Function ' 
    
    
     Private Sub Descargar (ByVal archivo As String) 
         Intentar 
             Uri As String = "ftp://" + ftpServerIP + "/" + teledirigido + "/" + archivo 
             ServerUri As nueva uri uri () 
             Si serverUri.Scheme <> Entonces Uri.UriSchemeFtp 
                 Volver 
             End If 
             Como FtpWebRequest Dim reqFTP 
             = CType reqFTP (FtpWebRequest.Create (New Uri ( "ftp://" + ftpServerIP + "/" + teledirigido + "/" + file)), FtpWebRequest) 
             reqFTP.Credentials = New NetworkCredential (ftpUserID, FTPPassword) 
             reqFTP.KeepAlive = False 
             reqFTP.Method = WebRequestMethods.Ftp.DownloadFile 
             reqFTP.UseBinary = True 
             reqFTP.Proxy = Nothing 
             reqFTP.UsePassive = False 
             Dim Respuesta Como FtpWebResponse = CType (reqFTP.GetResponse (), FtpWebResponse) 
             ResponseStream response.GetResponseStream As Stream = () 
             WriteStream As New FileStream (localDestnDir + "archivo, FileMode.Create);") 
             Dim Longitud As Integer = 2048 ' 
             'TODO: Error al procesar el fuente original se muestra a continuación 
             ' 
             ' 
             '------------------------------------------------- -------------------------------------------------- --------------------^--- ilegal en los espacios en blanco constante 
             ' 
             'TODO: Error al procesar el fuente original se muestra a continuación 
             ' 
             ' 
             '-----------------^--- Error de sintaxis: ')' espera 
             Dim buffer (longitud) Como byte [] 
             Dim bytesRead Como responseStream.Read Integer = (buffer, 0, length) 
             Mientras bytesRead> 0 
                 writeStream.Write (buffer, 0, bytesRead) 
                 = bytesRead responseStream.Read (buffer, 0, length) 
             Fin Mientras 
             writeStream.Close () 
             response.Close () 
         Wex Catch Como WebException 
             MessageBox.Show (wEx.Message, "Error de descarga") 
         Catch ex As Exception 
             MessageBox.Show (ex.Message, "Error de descarga"), 
         End Try 
     End Sub 'Descarga
    pero me sigue dando errores, han mermado a 7 erorres pero no tengo ni idea de como corregirlos, además no sé como vincular este codigo con un button o textbox (vamos... lo que va en el form), ahí me pierdo.

    un ejemplo no me vendría nada mal

    jueves, 29 de octubre de 2009 21:51
  • Hola Sandra..

    Perdón por la demora.. pero he estado alejado por cuestiones ajenas ;) A ver... ¿necesitas tenerlo en VB.NET por algún requerimiento? Vamos, puedo hacer el esfuerzo y tratar de crearte un ejemplo funcional usando ese lenguaje.. pero si es C# será mucho más rápido para mi.. ;)

    Si te da igual me dices y te creo una aplicación que haga lo que deseas.. y luego la discutimos si quieres para que entiendas el código.. y te aclares cualquier duda que te pueda quedar...

    Salu2

    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    miércoles, 4 de noviembre de 2009 19:04
    Moderador
  • gracias omar por responder, pensé q ya se habían olvidado de mi.

    mira no hay problema, supongo q el el poyecto lo podría abrir en visual basic 6.0 ?

    si tengo el ejemplo me será más fácil entenderlo y modificarlo a gusto o hacer las preguntas adecuadas para irlo perfeccionando.

    te agradezco mucho el interes, espero ansiosa tu respuesta
    jueves, 5 de noviembre de 2009 16:56
  • Vale ;)

    No te preocupes... yo te hago el ejemplo en C# totalmente funcional.. (así queda para alguien más del foro) y ya luego te será más cómodo pasarlo al lenguaje que desees.. igual si tienes alguna duda podemos verlo por aquí..

    Mañana sin falta posteo el ejemplo...

    Salu2
    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    jueves, 5 de noviembre de 2009 19:32
    Moderador
  • Hola Sandra..

    Bueno... lo prometido es deuda... así que, con un poquin de demora... aquí te dejo la aplicación completa con lo que deseas hacer....

    http://www.odelvalle.com/archive/2009/11/08/conectar_y_descargar_archivos_desde_un_ftp.aspx

    Al final del artículo tienes un enlace que te permite descargar todo el proyecto con el código fuente incluido... no dudes en preguntar si tienes cualquier duda...

    Suerte con los alumnos.. y porfi.. no digas nunca quien soy o me matarán jajaja ;)

    Salu2

    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    domingo, 8 de noviembre de 2009 13:39
    Moderador
  • Omar, un beso para ti!!!!!!!!

    no sabes el bien que me has hecho, verás el lunes cuando me aparezca en clase con la aplicación, haber quien me dice que no puede bajarse algo. ¡me los como!

    he modificado algunas cosillas, ya que fué error mío no habertelo comentado, por ejemplo no quería textbox, sino meter de una vez: el ftp, el usuario y la clave en el programilla, para que así nadie me diga que no se acordaba de la clave o que le daba error (asi me evitaba otro tipo de excusas), al final he metido el ftp, el user y la clave directamente en los textbox, y los he bloqueado para que no los puedan editar o modificar.

    asi q solo les queda elegir la carpeta donde quieren descarselo y dar al boton de "comenzar"

    la verdad cuando he visto el codigo me he asustado, pensé que eran tres lineas de codigo:

    - definir la direccion del ftp a descargar
    - listar los archivos que hay en la carpeta concreta del ftp
    - elegir la carpeta donde descargar
    - y la orden de descargar esos archivos a la carpeta elegida

    pensé que todo era más simple, pero madre mía creí q no lo iva a entender.

    Mil gracias Omar, no sé ni como agradecerte tu tiempo, un abrazo desde españa

    PD: una preguntilla, - no quiero molestar más -, pero... ¿se podría aplicar un progressbar? para ver el progreso de la descarga... ¿o es mucho pedir? de todas maneras, es excelente lo que has hecho y me sirve muchisimo.

    si pudiera te daba un millón de puntos, besos Sandra Pastor

    edito: Hay 2 problemas q le he encontrado,...

    1. que aunque los archivos esten el directorio local, vuelve a descargarselos (o sea si los tiene en su carpeta local, vuelve a sobrescribir el archivo) lo mejor sería que si ya los tiene no lo descargue mas...
     (te lo digo porque hay archivos que son bastante grandes, y si ya se los bajó es una faena que vuelva a bajarselo junto a los nuevos) 

    2. una vez sse descarga todo si le vuelves a dar al boton comenzar, lanza un error. 

    ¿se puede corregir este comportamiento?

    martes, 10 de noviembre de 2009 10:38
  • jajajaja.. no pasa nada Sandra... aprendemos todos de algo así..

    A ver... No digas desde España como si quedara muy lejooooss.. jajaja estoy en Madrid.. ;)

    En realidad.. pude realizar el ejemplo quizás de una manera más smple.. pero ya que estábamos mejor hacerlo como es no? ;) Es por eso que decidí escribir el artículo en mi blog.. para ir explicando cada parte del desarrollo..

    - Aplicación de hilos
    - Eventos
    - Interactuar con controles desde otro hilo

    Sobre el tema de que no escriban el usuario, servidor y contraseña.. sí te había entendido.. pero como no tenía esa información preferí hacerlo pidiendola al usuario..

    Lo de crear una barra de prograso que te indique el % de la descarga ya requiere un poco más de código... pues tendríamos que conocer primero el tamaño de cada archivo y luego ir mostrando la cantidad transferida como progreso de dicha barra.. si tengo un tiempo buscaré esta alternativa..
    Sobre los dos problemitas...

    1- Bueno.. aquí me dejé guiar por el comentario que hacías de que la versión de los archivos en el servidor siempre estará más actualizada.. por eso dejé que los archivos se re-escribieran si estos existían ya en el cliente.. pero si quieres evitar esto, pudes usar el File.Exist

    if (File.Exists(_target + "\\" + file))
    {
       if (FtpEventNotification != null) FtpEventNotification(string.Format("El archivo {0} ya existe...", file));
       continue;
    }

    Ese código lo adicionas antes de hacer Download(file);

    2- Aquí cometí un curioso error ¿ves que todos aprendemos?.. un hilo, después que se ha terminado.. no se puede volver a iniciar.. hay que crear uno nuevo y volverlo a iniciar...

    Los cambios para corregir este problema son:

    La línea que crea el objeto Thread

     _ftpThread = new Thread(StartDownload);

    que está en el archivo FtpThread.cs debe ser movida al Método FtpThreadStart quedando de la siguiente forma:

    public void FtpThreadStart(string user, string pass, string server, string target)
    {
       _ftpThread = new Thread(StartDownload);

       InProcess = true;

       _ftpUser = user;
       _ftpServer = server;
       _ftpPass = pass;
       _target = target;

       if (FtpEventNotification != null) FtpEventNotification("Iniciando proceso....");
       _ftpThread.Start();
    }

    ;) Me alegra mucho haber podido ayudarte.. .

    Salu2


    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    martes, 10 de noviembre de 2009 20:23
    Moderador
  • Hola Omar,...

    mira, haber si lo he hecho bien...

    1. me sale dos advertencias que no se que significan te las pego aquí:

    Advertencia	2	Se ha especificado una ruta de acceso de búsqueda 'C:\Program Files\Microsoft Visual Studio\VC98\lib' no válida en 'Variable de entorno LIB' -- 'El sistema no puede encontrar la ruta especificada. '	WinFTP
    
    Advertencia	1	Se ha especificado una ruta de acceso de búsqueda 'C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib' no válida en 'Variable de entorno LIB' -- 'El sistema no puede encontrar la ruta especificada. '	WinFTP
    

    2. mira haber si he pegado bien en el sitio correcto el codigo que me distes (no me especificastes en que sitio era, asi que supongo que era en ftpthread.cs):

    private void StartDownload()
    {
    if (FtpEventNotification != null) FtpEventNotification("Obteniendo lista de archivos....");
    var files = GetFileList();

    if (FtpEventNotification != null) FtpEventNotification(string.Format("{0} archivos a descargar...", files.Count));

    foreach (var file in files)
    {
    if (FtpEventNotification != null) FtpEventNotification(string.Format("Descargando {0}...", file));

    if (File.Exists(_target + "\\" + file))
    {
    if (FtpEventNotification != null) FtpEventNotification(string.Format("El archivo {0} ya existe...", file));
    continue;
    }
    Download(file);
    }

    3. sobre ftpThread (me dijistes que moviera la linea, pero me da este error....

    Error	3	El nombre 'ftpThread' no existe en el contexto actual	D:\Users\Jorge\Downloads\Winftp\WinFTP\FtpThread.cs	23	13	WinFTP
    
    
    moví la linea q me dijistes, y lo q hice fué esto y así quedo el codigo:

     private readonly Thread _ftpThread;
    
            public event FtpNotification FtpEventNotification;
            public bool InProcess { get; private set; }
                    
             public void FtpThreadStart(string user, string pass, string server, string target)
              {
                _ftpThread = new Thread(StartDownload); 
                
                InProcess = true;
    
                _ftpUser = user;
                _ftpServer = server;
                _ftpPass = pass;
                _target = target;
    
                if (FtpEventNotification != null) FtpEventNotification("Iniciando proceso....");
                _ftpThread.Start();
               }
    
    



    4. sobre el tema progressbar
    :

    y sobre lo del progressbar, dejalo, no te quiero complicar la vida,

    lo que tengo es una curiosidad, como se podría hacer que una vez le digas en que carpeta descargar, compare los archivos que hay en la carpeta del ftp con la carpeta local y te advierta de los archivos que hay sin actualizar o que faltan en tu carpeta local . (es muy complicado esto?, si lo es, no quiero darte más la paliza)

    PD : no sabía q eras de aqui de españa, mira no sé pensé que eras de fuera, quizas por la foto y tus rasgos latinos.


    miércoles, 11 de noviembre de 2009 14:30
  • Hola Sandra...

    No soy Español... pero sí estoy en España ;)

    El lugar donde has puesto el código es el correcto.. Las advertencias iniciales recompilando todo el proyecto no te debían volver a salir...

    En cuanto a lo que dices.. no es complicado... pero qué deseas exáctamente?.. que te muestre esa información y te permita no descargar nada? o que luego de mostrarla se realice la descarga de los que faltan?

    Como lo tienes ahora... te irá diciendo.. Este archivo ya existe y saltará al siguiente.. en caso de no existir, realizará la descarga.. lo que no entiendo exactamente cual es la lógica que deseas seguir con el chequeo de los archivos que existen y los que no.. y qué haras luego de realizar la comparación..

    Salu2


    MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise 3.5.

    Mi perfil: www.odelvalle.com
    Colaborador: www.secondnug.com
    miércoles, 11 de noviembre de 2009 16:50
    Moderador
  • - algo como te muestro en la imagen (sería lo ideal)... (ese control que te pongo en la imagen lo hace al ejecutarse el programa, y si el alumno ve casillas en rojo, el alumno sabe que debe dar al boton de descarga para descargarse lo que le falta)

    http://www.subirimagenes.com/otros-captura-3553744.html

    - y otra cosilla que le quería incluir es un boton para examinar el disco del pc, y que el alumno seleccione un archivo y lo suba a una direccion concreta de ftp (direccion de ftp que le incluyo yo misma en el programa, o sea no la tiene que incluir el alumno la direccion ftp). es porque quiero ponerles test, y pequeños controles para que me los contesten y me los suban a la direccion del ftp (esto pensando en el futuro)

    en fin, como siga pidiendo me vas a mandar a "freir esparragos"... :) ,si ves q es demasiado lo que pido dimelo. ya con lo que me has hecho estoy mas que contenta.

    disculpa que a veces contesto tarde pero es que ando super liada entre la casa y el colegio no doy a "basto"

    muchísimas gracias por atenderme! un abrazo desde almería




    viernes, 13 de noviembre de 2009 10:19