• Publicidad

Problemas con upload de archivos Help [Resuelto]

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Notapor ascot31 » 2008-03-14 20:06 @879

explorer escribiste:Coloca un

$|++;

al principio del fichero. Según has puesto las salidas del debug, debería salir primera la frase de la subrutina (la "Pase debug 2") y luego, la "Pase debug 1".

Pues si entendí bien. xD Siempre la salida es 1...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI;
$|++;  
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

¿Algo por parte del servidor que pueda afectar o.O?
ascot31
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-03-13 22:57 @998

Publicidad

Resuelto

Notapor ascot31 » 2008-03-14 20:25 @892

No se la van a creer dije: "Si no está entrando al procedimiento pues lo forzamos". Entonces tomé el código que ya existía y nada más quité el procedimiento y puse todo el código y salió. Lo muestro a continuación para que vean los cambios con esto parece que está resuelto, quitar la subrutina y pegar el código. Raro pero funcionó.

Código
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
########################################################
#
# "Upload de archivos"
#
# Creado por: Uriel Lizama
# Todos los derechos reservado.
#
# http://perlenespanol.com/
#
#########################################################

use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

#iniciamos el script de perl

my %Input;
my $query = new CGI;
my @pairs = $query->param;

foreach my $pair(@pairs){
        $Input{$pair} = $query->param($pair);
}

#Obtenemos el valor del Radio Button Actual
my $radioButton = $Input{'docTipo'}; #Segun el valor de un radio para escoger una carpeta
my $nombrePersonalizado = $Input{'cadenatexto'}; #Si cambian el nombre
my $nombre_en_servidor;
my $nuevoEstado = $Input{'newEstado'}; #Para saber que boton apreto
my $carpetaEstado = $Input{'MEstados'}; #Una <select> de html
my $Location="";
my $whobutton = $Input{'btn_Accion'}; #un boton para saber que boton se apreto


#Directorio donde guardaremos archivos
my $dir = "/usr/local/psa/home/vhosts/informanalitica.com/httpdocs/Documentos/tmp";
$Location = "http://informanalitica.com/util/subearchivo.php";
 

#Array con extensiones de archivos que podemos recibir
#my @extensiones = ('pdf','gif','jpg','jpeg','bmp','png');

#Verificamos que los botones no se aprieten
if ( $whobutton eq "Enviar"  ){
       
        #Iniciar la recepcion del archivo      
        $nombre_en_servidor = $Input{'userfile'};
        $nombre_en_servidor =~ s/ /_/gi;
        $nombre_en_servidor =~ s!^.*(\\|\/)!!;
        my ($file, $ext ) = split( /\./ , $nombre_en_servidor );
       
        #Si el input de nombre personalizado no esta vacio.
        if ( $nombrePersonalizado ne "" ){
                $nombrePersonalizado = "$nombrePersonalizado.$ext";
                $nombrePersonalizado =~ s/ /_/gi;
                $nombrePersonalizado =~ s!^.*(\\|\/)!!;
                $nombre_en_servidor = "";
                $nombre_en_servidor = $nombrePersonalizado;
               
        }
       
        #Abrimos el nuevo archivo
                open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo $dir/$nombre_en_servidor<-";
                binmode(OUTFILE); #Para no tener problemas en Windows
       
        #Transferimos byte por byte el archivo
                while (my $bytesread = read($Input{'userfile'}, my $buffer, 1024)) {
                        print OUTFILE $buffer;
                }
       
        #Cerramos el archivo creado
                close (OUTFILE);


        $Location = $Location . "?nombreArchivo=$nombre_en_servidor&docTipo=$radioButton&estado=$carpetaEstado";
       
       
}elsif ( $whobutton eq "Agregar" ) {#Verificamos el boton apretado y mandamos variables.
       
        $Location = "http://informanalitica.com/util/eliminarEstados.php";     
        $Location = $Location . "?agrEstado=true&delEstado=false&objetivo=$nuevoEstado";
       
}elsif ($whobutton eq "Eliminar" ) {
       
        $Location = "http://informanalitica.com/util/eliminarEstados.php";     
        $Location = $Location . "?agrEstado=false&delEstado=true&objetivo=$carpetaEstado";
       
}


        $nuevoEstado = "";
        $carpetaEstado = "";
       
        #Si el archivo se subio redireccionamos a la pagina de subir archivos con true.
        #$debug3 = $Input{'userfile'};
        #print "Content-type: text/html\n\n";
        print "Location: $Location\n";
        exit(1);

#Finaliza script perl
#----------------------------------------------------------------------------------
 
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Realmente una jalada pero aquí dejo la solución por si alguien tiene el mismo problema gracias a los que me ayudaron un foro excelente y de rápida respuesta. Nos seguimos viendo xD por aquí :P
ascot31
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-03-13 22:57 @998

Notapor kidd » 2008-03-14 21:30 @938

Y me quedaré con la eterna duda de porque no corría correctamente con la llamada a la función :lol:
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

Notapor ascot31 » 2008-03-15 23:04 @003

kidd escribiste:Y me quedaré con la eterna duda de porque no corría correctamente con la llamada a la función :lol:


¿Yo creo que cosas del demonio? :roll: :lol:
ascot31
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-03-13 22:57 @998

Anterior

Volver a Web

¿Quién está conectado?

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