• Publicidad

Problema en archivo upload_archivo.cgi

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

Problema en archivo upload_archivo.cgi

Notapor unestigma » 2005-08-26 09:33 @440

Estoy tratando de utilizar el código para crear el sistema de subida de archivos.

Al querer subirlo me sale el siguiente error

Software error:
Global symbol "$public_html" requires explicit package name at /home/unestigm/public_html/cgi-bin/upload_archivo.cgi line 63.
Execution of /home/unestigm/public_html/cgi-bin/upload_archivo.cgi aborted due to compilation errors.


En la línea 63 que me indica yo tengo insertado el siguiente código:

open (OUTFILE, ">$dir/$public_html/subidos") || die "No se puedo crear el archivo";

Por favor, si podrían ayudarme para saber qué debo insertar.

Saludos

Arlo
unestigma
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2005-08-26 09:30 @437
Ubicación: Rosario

Publicidad

Re: Problema en archivo upload_archivo.cgi

Notapor kidd » 2005-08-26 10:11 @466

Me parece que tienes un error tipográfico y donde dice $public_html debería decir simplemente public_html.

El error te aparece porque al poner "$public_html" estás indicando que ahí quieres el valor de esa variable. Como Perl no encuentra la variable entonces se queja y te manda el error.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Problema en archivo upload_archivo.cgi

Notapor unestigma » 2005-08-26 14:07 @630

Este es el código que tengo en el archivo upload_archivo.pl

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. ########################################################
  3. #
  4. # Código de ejemplo del tutorial: "Upload de archivos"
  5. #
  6. # Creado por: Uriel Lizama
  7. # Todos los derechos reservado.
  8. #
  9. # http://perlenespanol.com/
  10. #
  11. #########################################################
  12.  
  13. use strict;
  14. use CGI::Carp qw(fatalsToBrowser);
  15. use CGI;
  16.  
  17. my %Input;
  18.  
  19. my $query = new CGI;
  20. my @pairs = $query->param;
  21.  
  22. foreach my $pair (@pairs) {
  23.     $Input{$pair} = $query->param($pair);
  24. }
  25.  
  26. #Directorio donde queremos estacionar los archivos
  27. my $dir = "/subidos";
  28.  
  29. #Array con extensiones de archivos que podemos recibir
  30. my @extensiones = ( 'gif', 'jpg', 'jpeg', 'bmp', 'png' );
  31.  
  32. recepcion_de_archivo();                #Iniciar la recepción del archivo
  33.  
  34. #TODO SALIO BIEN
  35. print "Content-type: text/html\n\n";
  36. print "<h1>El archivo fue recibido correctamente</h1>\n";
  37.  
  38. exit(1);
  39.  
  40. sub recepcion_de_archivo {
  41.  
  42.     my $nombre_en_servidor = $Input{'archivo'};
  43.     $nombre_en_servidor =~ s/ /_/gi;
  44.     $nombre_en_servidor =~ s!^.*(\\|\/)!!;
  45.  
  46.     my $extension_correcta = 0;
  47.  
  48.     foreach (@extensiones) {
  49.         if ( $nombre_en_servidor =~ /\.$_$/i ) {
  50.             $extension_correcta = 1;
  51.             last;
  52.         }
  53.     }
  54.  
  55.     if ($extension_correcta) {
  56.  
  57.         #Abrimos el nuevo archivo
  58.         open( OUTFILE, ">$dir/public_html" ) || die "No se puedo crear el archivo";
  59.         binmode(OUTFILE);              #Para no tener problemas en Windows
  60.  
  61.         #Transferimos byte por byte el archivo
  62.         while ( my $bytesread = read( $Input{'archivo'}, my $buffer, 1024 ) ) {
  63.             print OUTFILE $buffer;
  64.         }
  65.  
  66.         #Cerramos el archivo creado
  67.         close(OUTFILE);
  68.  
  69.     }
  70.     else {
  71.         print "Content-type: text/html\n\n";
  72.         print "<h1>Extension incorrecta</h1>";
  73.         print "Sólo se reciben archivo con extension:";
  74.         print join( ",", @extensiones );
  75.         exit(0);
  76.     }
  77.  
  78. }                                      #sub recepcion_de_archivo
  79.  
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4


Ingreso a la dirección http://www.unestigma.com.ar/forma_upload.html para poder seleccionar el archivo y enviarlo.

Cuando lo quiero enviar me sale el siguiente error:

Software error:
No se puedo crear el archivo at /home/unestigm/public_html/cgi-bin/upload_archivo.cgi line 63.
For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

No se cual es el error que tengo en el line 63


Estoy por comerme el monitor.

Saludos

Arlo
unestigma
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2005-08-26 09:30 @437
Ubicación: Rosario

Re: Problema en archivo upload_archivo.cgi

Notapor explorer39 » 2005-08-26 16:34 @732

Cambia la línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (OUTFILE, ">$dir/public_html") || die "No se puedo crear el archivo";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

por
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (OUTFILE, ">$dir/public_html/subido") || die "No se puedo crear el archivo $dir/public_html/subido: $!";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y nos cuentas si hay algún cambio.
explorer39
 

Notapor kidd » 2005-08-26 17:37 @775

Hay un error en el código. Donde dice:

open (OUTFILE, ">$dir/public_html") || die "No se puedo crear el archivo";

debería de decir

open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo $dir/$nombre_en_servidor";

Recuerda que debes de cambiar la variable $dir para que corresponda a tu directorio.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado