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

upload con cgi - restricciones de tamaño

Estas en el tema de upload con cgi - restricciones de tamaño en el foro de Programación General en Foros del Web. Hola, tengo un upload con AJAX y cgi; la verdad es que no se mucho de esto ... lo mis es PHP, y no entiendo ...
  #1 (permalink)  
Antiguo 25/08/2008, 11:13
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 11 meses
Puntos: 4
upload con cgi - restricciones de tamaño

Hola, tengo un upload con AJAX y cgi; la verdad es que no se mucho de esto ... lo mis es PHP, y no entiendo del todo bien como funciona.
Este es el script funcionando:
http://yomiento.webfactional.com/lig...oad_tester.php

Mi problema es que no puedo subir archivos mayores a 1.4Mb ... como puedo solucionar esto ?.
Con php defino los valores max_file_upload y otros relacionados; tengo que hacer algo similar con este script ?.
Pueden ver el script funcionando en http://yomiento.webfactional.com/lig...oad_tester.php

Saludos y gracias.
__________________
| Cabeza De Raton |
  #2 (permalink)  
Antiguo 25/08/2008, 11:38
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Respuesta: upload con cgi - restricciones de tamaño

Pero es PHP o perl ?

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 25/08/2008, 11:40
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 11 meses
Puntos: 4
Respuesta: upload con cgi - restricciones de tamaño

Si esta en .cgi es perl., no ?.
el archivo del server que recibe los datos del cliente se llama upload.cgi.
__________________
| Cabeza De Raton |
  #4 (permalink)  
Antiguo 25/08/2008, 12:58
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Respuesta: upload con cgi - restricciones de tamaño

CGI puede estar en PERL, PHP, C y muchos lenguajes más...Es como una filosofía, no un lenguaje...

Puedes mostrarnos el código del archivo ? fijate si no tiene un límite de subida ahí mismo...hay que ver como capta los datos del formulario...

Saludos
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 25/08/2008, 13:00
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 11 meses
Puntos: 4
Respuesta: upload con cgi - restricciones de tamaño

Tien un límite de subida, pero lo he puesto mas cero que la inflación de mi país.
Código PHP:
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print 
"000 - CGI funciona en este servidor";



$max_upload 100000000# Set this to whatever you feel suitable for you.

$tmp_dir="tempfiles";   # If you change this you need to change it in filestatus.php too.

                        # Also, on *nix systems you may have to set the folder permissions

                        # to 777 in order to get this script to work properly.  

#############

# /SETTINGS #

#############

use CGI;

use 
Fcntl qw(:DEFAULT :flock);

use 
File::Temp qwtempfile tempdir /;

#use Carp;





@qstring=split(/&/,$ENV{'QUERY_STRING'});

@
p1 split(/=/,$qstring[0]);

$sessionid $p1[1];

$sessionid =~ s/[^a-zA-Z0-9]//g;  # sanitized as suggested by Terrence Johnson.



# don't change the next few lines unless you have a very good reason to.



$post_data_file "$tmp_dir/$sessionid"."_postdata";

$monitor_file "$tmp_dir/$sessionid"."_flength";

$error_file "$tmp_dir/$sessionid"."_err";

$signal_file "$tmp_dir/$sessionid"."_signal";

$qstring_file "$tmp_dir/$sessionid"."_qstring";



#require("./header.cgi");



#carp "$post_data_file and $monitor_file";



$content_type $ENV{'CONTENT_TYPE'};

$len $ENV{'CONTENT_LENGTH'};

$bRead=0;

$|=
1;





sub bye_bye {

    
$mes shift;

    

    
# Try to open error file to output message too

    
$err_ok open (ERRFILE,">"$error_file);

    if(
$err_ok) {

        print 
ERRFILE $mes#write message to file, so can be read from fileprogress.php

        
close (ERRFILE);

    }

    exit;

}



# see if we are within the allowed limit.



if($len $max_upload)

{

    
close (STDIN);

    
bye_bye("The maximum upload size has been exceeded");

}





#

# The thing to watch out for is file locking. Only

# one thread may open a file for writing at any given time.





if (-"$post_data_file") {

    
unlink("$post_data_file");

}



if (-
"$monitor_file") {

    
unlink("$monitor_file");

}



if (-
"$error_file") {

  
unlink("$error_file");

}



sysopen(FH$monitor_fileO_RDWR O_CREAT)

    or &
bye_bye ("cannot open numfile: $!");



# autoflush FH

$ofh select(FH); $| = 1select ($ofh);

flock(FHLOCK_EX)

    or  &
bye_bye ("Cannot write-lock numfile: $!");

seek(FH00)

    or &
bye_bye ("cannot rewind numfile : $!");

print 
FH $len;    

close(FH);    

    

sleep(1);





open(TMP,">","$post_data_file") or &bye_bye ("cannot open temp file");

binmode TMP':raw'



#

# read and store the raw post data on a temporary file so that we can

# pass it though to a CGI instance later on.

#







my $i=0;



$ofh select(TMP); $| = 1select ($ofh);

            

while (
read (STDIN ,$LINE4096) && $bRead $len )

{

    
$bRead += length $LINE;

    

    
select(undefundefundef,0.35);    # sleep for 0.35 of a second.

    

    # Many thanx to Patrick Knoell who came up with the optimized value for

    # the duration of the sleep



    
$i++;

    print 
TMP $LINE;

}



close (TMP);



#

# We don't want to decode the post data ourselves. That's like

# reinventing the wheel. If we handle the post data with the perl

# CGI module that means the PHP script does not get access to the

# files, but there is a way around this.

#

# We can ask the CGI module to save the files, then we can pass

# these filenames to the PHP script. In other words instead of

# giving the raw post data (which contains the 'bodies' of the

# files), we just send a list of file names.

#



open(STDIN,"$post_data_file") or &bye_bye("cannot open temp file");



my $cg = new CGI();

my $qstring="";

my %vars = $cg->Vars;

my $j=0;



while((
$key,$value) = each %vars)

{

     

    
$file_upload $cg->param($key);



    if(
defined $value && $value ne '')

    {    



        
my $fh $cg->upload($key);

        if(
defined $fh)

        {

            
#carp $fh;

            
($tmp_fh$tmp_filename) = tempfile();



            while(<
$fh>) {

                print 
$tmp_fh $_;

            }



            
close($tmp_fh);



            
$fsize =(-s $fh);



            
$fh =~ s/([^a-zA-Z0-9_-.])/uc sprintf("%%%02x",ord($1))/eg;

            
$tmp_filename =~ s/([^a-zA-Z0-9_-.])/uc sprintf("%%%02x",ord($1))/eg;

            
$qstring .= "file[name][$j]=$fh&file[size][$j]=$fsize&";

            
$qstring .= "file[tmp_name][$j]=$tmp_filename&";

            
$j++;

        }

        else

        {

            
$value =~ s/([^a-zA-Z0-9_-.])/uc sprintf("%%%02x",ord($1))/eg;

            
$qstring .= "$key=$value&" ;

        }

    }

}





open (SIGNAL,">"$signal_file) or &bye_bye ("cannot open signal file");

print 
SIGNAL "\n";

close (SIGNAL);



open (QSTR,">""$qstring_file") or &bye_bye ("cannot open output file");

print 
QSTR $qstring;

close (QSTR);



print 
"Content-type: text/html\r\n";

print 
"<html></html>"
__________________
| Cabeza De Raton |
  #6 (permalink)  
Antiguo 25/08/2008, 14:16
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Respuesta: upload con cgi - restricciones de tamaño

la función es

if($len > $max_upload)
{
close (STDIN);
bye_bye("The maximum upload size has been exceeded");
}

no debería fallar, está checkeando si el cantidad de bites es mayor a loq ue vos difiniste en max_upload...

lo que me parece que está mal es

$len = $ENV{'CONTENT_LENGTH'};

debería de ser

$len = length($ENV{'CONTENT_LENGTH'});

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 25/08/2008, 14:25
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 11 meses
Puntos: 4
Respuesta: upload con cgi - restricciones de tamaño

Sabes que en realidad me parece que apache me está cortando el tiempo de ejecución del script a 2 minutos. No sabes si se puede modificar este tiempo con el .htaccess ?
__________________
| Cabeza De Raton |
  #8 (permalink)  
Antiguo 25/08/2008, 19:03
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Respuesta: upload con cgi - restricciones de tamaño

haa, si, si tarda más de 2 minutos se corta...y supongo que eso será desde el HTTPD.CONF y no desde el htaccess...por cuestiones de seguridad...

Saludos
__________________
Esteban Quintana
  #9 (permalink)  
Antiguo 26/08/2008, 04:48
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 11 meses
Puntos: 4
Respuesta: upload con cgi - restricciones de tamaño

si, es por eso ...
__________________
| Cabeza De Raton |
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 10:03.