Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con upload de archivos

Estas en el tema de Problemas con upload de archivos en el foro de Programación General en Foros del Web. Hola buenos días, tardes o noches. Bueno, estoy en este foro por un problemita que me surgió al hacer upload de archivos con Perl ya ...
  #1 (permalink)  
Antiguo 14/03/2008, 15:05
 
Fecha de Ingreso: noviembre-2006
Ubicación: Guadalajara
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
Exclamación Problemas con upload de archivos

Hola buenos días, tardes o noches.

Bueno, estoy en este foro por un problemita que me surgió al hacer upload de archivos con Perl ya que no me dejó subir el servidor con otra cosa... así que tuve que recurrir a métodos alternativos en el cual caí a este foro :D, me gustaría que me ayudaran con la consulta, y la consulta es la siguiente.

Tengo una página web donde se suben archivos; en ésta, por medio de radio buttons escogen 3 opciones, una de estas opciones tiene otra pequeña lista donde se selecciona otra subopción; esta información que se selecciona antes es para saber, digamos, en qué carpeta se guardará el archivo.

Ahora, después de seleccionar esto se utiliza una forma para subir el archivo (utilizé el script de esta página), que mostraré más o menos la forma, dependiendo del botón que seleccionen y el estado de los radio, inserto o elimino algunas cosas. El problema radica en que en ciertos momentos me lo hace y en otros no y qué mejor el ejemplo para que lo vean xD que chance y ni me explique bien así que pongo más o menos el código.

Mención: "soy novato, ja". Perdón si está largo el post Sad (Se va detallando el problema abajo)

Código
HTML:
Código HTML:
form action="util/archivo.pl" method="post" enctype="multipart/form-data" onsubmit="return valida_Forma()"  name="Envio" >
  <div class="post">
    <h2 class="title">Subir un Archivo</h2>
      <div class="entry">
        <strong>Tipo de documento</strong> <br />                                                               
       
        <input type="radio" name="docTipo" checked="checked" value="Primeras" onclick="toggle_estados(this)" /> Primera Plana <br />
        <input type="radio" name="docTipo" value="Columnas" onclick="toggle_estados(this)" /> Columna <br />
        <input type="radio" name="docTipo" value="Estados" onclick="toggle_estados(this)" /> Estado de la Republica <br/                                                                                       
        <div id="div_estados" style="display:none">
        <select name='MEstados' multiple='false'>No hay estados disponibles. <br /></select>                                           
        <span>
           <strong>Agregar un Estado:</strong> <br />
           <input type="text" name="newEstado" size="30" maxlength="30" class="inputColor">
           <input type="submit" name="btn_Accion" value="Agregar" class="boton" />                                                                 
        </span>  
        <span>
          <strong>Eliminar Estados Seleccionados</strong>
          <input type="submit" name="btn_Accion" value="Eliminar" class="boton" />
        </span>            
        </div>                                       
      </div>
  </div>
  <div class="post">
    <h2 class="title">Seleccione el documento</h2>
      <div class="entry">
        <strong> Cambiar el nombre del documento: </strong> <br />
        <input type="text" name="cadenatexto" size="50" maxlength="100" class="inputColor" />
        <input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> <!-- 10 megas -->
        <strong>Subir un nuevo archivo: </strong>
        <input name="userfile" type="file" size="50"/>
        <input type="submit" name="btn_Accion" value="Enviar" class="boton" /> 
     </div>
  </div>
</form> 
Y ahora especifico el código modificador de perl como dios me dio a entender XD (está basado en el ejemplo de aquí):

Código
Perl:

Código:
#!/usr/bin/perl -w
########################################################
#
# "Upload de archivos"
#
# Creado por: Uriel Lizama
# Todos los derechos reservado.
#
# http://perlenespanol.baboonsoftware.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/pagina.com/httpdocs/Documentos/tmp"; #ruta del directorio donde se guardan los archivos
$Location = "http://miservidor.com/util/subearchivo.php"; #Redirecciono algunas variables para dar de alta en bases de datos y algunas cosas mas

#Verificamos que los botones no se aprieten
if ( $whobutton eq "Enviar"  ){ #Pregunto si el boton clickeado es el de valor enviado ( no sabia como se hacia y asi le hice XD)
       #En este lugar es tooodo el problema es lo unico que necesito que haga T_T
       #Que ya todo lo demas lo hace bien pero esta subrutina no
        #Iniciar la recepcion del archivo

        recepcion_de_archivo();

#Lo que deberia de imprimir completo pero no lo hace por que no entra a
#recepcion de archivo T_T pero si entra al if
        $Location = $Location . "?nombreArchivo=$nombre_en_servidor&docTipo=$radioButton&estado=$carpetaEstado";
#Parece que aqui da el problema ya que el location me termina mandando esto
#http://miservidor.com/util/subearchivo.php en el final. y nada concatenado Sad
#Lo peor del caso es que aveces si me lo hace cuando espero algun tiempo y otras no :S
       
}elsif ( $whobutton eq "Agregar" ) {#Verificamos el boton apretado y mandamos variables. #Si se va agregar un estado
       
        $Location = "http://miservidor.com/util/eliminarEstados.php";#redirecciono pero aqui no me da problemas
        $Location = $Location . "?agrEstado=true&delEstado=false&objetivo=$nuevoEstado";
       
}elsif ($whobutton eq "Eliminar" ) { #Elimino pero no me da problemas
       
        $Location = "http://informanalitica.com/util/eliminarEstados.php";#redireccion pero igual no hay problema
        $Location = $Location . "?agrEstado=false&delEstado=true&objetivo=$carpetaEstado";
       
}


$nuevoEstado = "";
$carpetaEstado = "";

#Si el archivo se subio redireccionamos a la pagina de subir archivos con true.
#print "Content-type: text/html\n\n";
print "Location: $Location\n";#Redirecciono segun variable concatenada
exit(1);

#Finaliza script perl
#----------------------------------------------------------------------------------

#Funcion para recepcion de archivos
sub recepcion_de_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);



} #sub recepcion_de_archivo
El problema como les comento es que me termina enviando una dirección como se muestra aqui que no me da el nombre del archivo, y no entra a la subrutina... u.u lo muestro aqui:(Realmente el problema esta en archivo boton de "Enviar")

Código:
Código:
  http://miservidor.com/util/subearchivo.php?nombreArchivo=&docTipo=Columnas&estado=
y no del tipo
Código:
Código:
http://miservidor.com/util/subearchivo.php?nombreArchivo=Hola&docTipo=Columnas&estado=Oaxaca
Es decir no esta entrando a la subrutina llamada "sub recepcion_de_archivo" ya que imprimi unas variables, y estas me mostraban que entraban al IF pero uqe no entraba a la SUBRUTINA

Espero que respondan mi duda :( Gracias por todo y espero respuesta(Espero que se entienda y gracias :P)
  #2 (permalink)  
Antiguo 15/03/2008, 07:24
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Re: Problemas con upload de archivos

cuando tienes estos problemas de flujo del script es muy pero muy bueno ver que contienen las variables exactamente, lo que te recomiendo es que hagas un backup del script y hagas pruebas en el mismo...

Las pruebas serían que en todos los casos posibles del script te imprima el valor de todas las variables...Sobretodo de la de $whobutton que es la que no está reconociendo el valor Enviar...

Hacelo y seguro encontrarás el problema...

__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:48.