• Publicidad

Error al subir archivo con FTP

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Error al subir archivo con FTP

Notapor Doddy » 2012-07-28 18:50 @827

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.005 segundos, usando GeSHi 1.0.8.4


¿ Alguien me podría ayudar ?

P.D.: pueden borrar el tema: solo había que agregar binary()
Imagen
Avatar de Usuario
Doddy
Vive para Perl en Español
Vive para Perl en Español
 
Mensajes: 860
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Error al subir archivo con FTP

Notapor reLlene » 2012-07-29 18:31 @813

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.
Sexo : unzip ; strip ; touch ; grep ; finger ;mount ; fsck ; more ; yes ; umount ; sleep.
Avatar de Usuario
reLlene
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 97
Registrado: 2012-06-04 07:16 @344

Re: Error al subir archivo con FTP

Notapor elistraus » 2014-02-07 15:17 @679

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.006 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.005 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.
elistraus
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 37
Registrado: 2011-10-31 23:37 @026

Re: Error al subir archivo con FTP

Notapor Aceitunas » 2014-02-07 15:48 @700

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.006 segundos, usando GeSHi 1.0.8.4


Me imagino que sea así, no probado.
Voy a llegar hasta el final, voy a subir la velocidad - Migue Benítez.
Aceitunas
Perlero Frecuente
Perlero Frecuente
 
Mensajes: 105
Registrado: 2013-11-07 15:25 @684
Ubicación: Ciudad Real, España.

Re: Error al subir archivo con FTP

Notapor elistraus » 2014-02-07 16:06 @712

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
elistraus
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 37
Registrado: 2011-10-31 23:37 @026

Re: Error al subir archivo con FTP

Notapor explorer » 2014-02-07 20:46 @907

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.007 segundos, usando GeSHi 1.0.8.4
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 13001
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error al subir archivo con FTP

Notapor elistraus » 2014-02-20 10:34 @482

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.007 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
elistraus
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 37
Registrado: 2011-10-31 23:37 @026

Re: Error al subir archivo con FTP

Notapor explorer » 2014-02-20 13:28 @603

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.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 13001
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados