Página 1 de 1

Error al subir archivo con FTP

NotaPublicado: 2012-07-28 18:50 @827
por BigBear
Hola. Tengo un problema con el siguiente código. Lo acabo de probar con XAMPP y con una página en línea y aun así siempre se sube el archivo dañado pero en el disco el archivo no tiene ningún problema, siempre aparece como fichero dañado o final inesperado del archivo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ftp = Net::FTP->new($ftp_host);
  2. $ftp->login($ftp_user,$ftp_pass);
  3. $ftp->cwd($ftp_dir);
  4. $ftp->put("test.zip");
  5. $ftp->close();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿ Alguien me podría ayudar ?

P.D.: pueden borrar el tema: solo había que agregar binary()

Re: Error al subir archivo con FTP

NotaPublicado: 2012-07-29 18:31 @813
por reLlene
Doddy: no creo que venga al caso eliminar el hilo. ¿Por qué no dejas asentado cómo lo has solucionado que estoy seguro que a más de uno le puede llegar a servir esa información? :wink: Saludos.

Re: Error al subir archivo con FTP

NotaPublicado: 2014-02-07 15:17 @679
por elistraus
Tengo el mismo problema de cuando actualicé la versión del sistema operativo no suben los archivos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ftp = new Net::FTP($con_tdm{"server"}) or die ("Imposible conectar con el servidor: $!");
  2.             $ftp->login($con_tdm{"user_ftp"},$con_tdm{"pass"}) or die ("Login incorrecto: $!");
  3.             $ftp->cwd("cedula/SRC-BATCH/");
  4.             $ftp->delete('ViMaEntRu');
  5.             $ftp->put("".$home."servel/data/ViMaEntRu.txt","ViMaEntRu");
  6.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Dónde se coloca el binary() o hay alguna otra manera de poder subir el archivo? Lo malo es que no me arroja error ni nada.

Saludos.

Le he agregado
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ftp->put($file,"ViMaEntRu") or die "Error putting $file: ", $ftp->message;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y me arroja el siguiente error
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Error putting ViMaEntRu.txt: ALLO command not implemented.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Alguna pista de cómo solucionarlo en Linux.

Re: Error al subir archivo con FTP

NotaPublicado: 2014-02-07 15:48 @700
por Aceitunas
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ftp = new Net::FTP($con_tdm{"server"}) or die ("Imposible conectar con el servidor: $!");
  2. $ftp->login($con_tdm{"user_ftp"},$con_tdm{"pass"}) or die ("Login incorrecto: $!");
  3. $ftp->cwd("cedula/SRC-BATCH/");
  4. $ftp->delete('ViMaEntRu');
  5. $ftp->binary();
  6. $ftp->put("".$home."servel/data/ViMaEntRu.txt","ViMaEntRu");    
  7.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Me imagino que sea así, no probado.

Re: Error al subir archivo con FTP

NotaPublicado: 2014-02-07 16:06 @712
por elistraus
Gracias por responder, pero sigue con la falla, estoy googleando el problema pero no encuentro muchas soluciones, ¿hay alguna otra manera de subir el archivo, otro comando del módulo u otro módulo que haga lo mismo?

Saludos

Re: Error al subir archivo con FTP

NotaPublicado: 2014-02-07 20:46 @907
por explorer
El problema es el siguiente: tú le das la orden a Net::FTP para que te suba un archivo. Net::FTP le indica al servidor FTP al que se ha conectado que necesita reservar una cierta cantidad de bytes en su sistema de archivos para alojar el archivo que le va a mandar a continuación (o sea, que compruebe que hay espacio suficiente para almacenarlo. Si no, que nos devuelva error). Y... lo que sucede es que el servidor no entiende ese comando.

El comando que Net::FTP envía es el ALLO (abreviatura de allocate -reserva-), que es un comando estándar del FTP, así que el problema está en el lado del servidor: te estás conectando a un servidor, o muy viejo, o mal programado, o muy limitado.

El tema, entonces, es cómo decirle a Net::FTP que no envíe el comando ALLO.

Leyendo el manual, se ve que no dice nada al respecto (hay un método alloc(), pero se refiere a justo lo contrario: sí enviar el comando ALLO al servidor).

En cambio, leyendo el código fuente del módulo, vemos que sí hay una posibilidad: si en lugar de pasar el nombre del archivo local, pasamos un gestor de archivo, entonces no envía el comando ALLO. En el manual, en el método put(), dice que podemos hacerlo, indicándolo en el primer argumento y, en ese caso, estamos obligados a dar el nombre que tendrá el archivo en el sistema remoto.

Sería algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ftp = Net::FTP->new($con_tdm{'server'})           or die "Imposible conectar con el servidor: $!\n";
  2.    $ftp->login($con_tdm{'user_ftp'},$con_tdm{'pass'}) or die "Login incorrecto: $!\n";
  3.    $ftp->binary();
  4.    $ftp->cwd('cedula/SRC-BATCH/')                     or die "No puedo entrar en el directorio destino: $!\n";
  5.  
  6.    open my $fh, "${home}servel/data/ViMaEntRu.txt"    or die "No puedo abrir el archivo local: $!\n";
  7.  
  8.    $ftp->put($fh, 'ViMaEntRu')                        or die "No puedo mandar el archivo: $!\n";
  9.  
  10.    close $fh;
  11.    $ftp->quit();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Error al subir archivo con FTP

NotaPublicado: 2014-02-20 10:34 @482
por elistraus
Muchas gracias por responder, explorer. El servidor ftp que ocupo es el que viene por defecto en Ubuntu 13.04. De hecho no le hice nada, es tal cual viene :)

Por otra parte, como tenía que solucionar rápido el tema, hice una llamada system() ejecutando un archivo sh programado para subir el archivo mediante ftp:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. #!/bin/sh
  2. HOST="xxx.xxx.xxx.xxx"
  3. USER="mi_usuario"
  4. PASSWD="mi_pass"
  5. FILE="ViMaEntRu"
  6.  
  7. cd /home/mi_usuario/file/
  8.  
  9. ftp -v -n $HOST <<EOF
  10. quote USER $USER
  11. quote PASS $PASSWD
  12. cd cedula/SRC-BATCH/
  13. put $FILE
  14. quit
  15. EOF
  16. exit 0
  17.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

La cual funciona bien. Voy a probar lo que tu me has propuesto. Como soy yo el que tiene el problema con el servidor ftp, veré si es la solución y la comento, para que si a alguien le pasa lo mismo que a mi :(

Saludos :D

Re: Error al subir archivo con FTP

NotaPublicado: 2014-02-20 13:28 @603
por explorer
Yo no me refiero al ftp (cliente) de tu ordenador con Ubuntu, sino al ftp (servidor) del ordenador al que te conectas, que no entiende lo que es el comando ALLO.