Página 1 de 1

Problema en archivo upload_archivo.cgi

NotaPublicado: 2005-08-26 09:33 @440
por unestigma
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

Re: Problema en archivo upload_archivo.cgi

NotaPublicado: 2005-08-26 10:11 @466
por kidd
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

Re: Problema en archivo upload_archivo.cgi

NotaPublicado: 2005-08-26 14:07 @630
por unestigma
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.004 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

Re: Problema en archivo upload_archivo.cgi

NotaPublicado: 2005-08-26 16:34 @732
por explorer39
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.

NotaPublicado: 2005-08-26 17:37 @775
por kidd
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