Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/03/2009, 09:11
wannabe_aqp
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problema al Subir Archivos

uhmm, interesant voy averguiar un poco mas acerca de eso, Gracias por su ayuda :D

Buenos a fin de cuentas, utilize cgi, por si acaso les paso lo q encontre.
No soy bueno con cgi's :S


Código:
#!"C:\xampp\perl\bin\perl.exe"
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use Fcntl qw(:DEFAULT :flock);
use File::Temp qw/ tempfile tempdir /;

my $dir = "./upload/";
my %Input;
my $query = new CGI;
my @pairs = $query->param;

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

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

recepcion_de_archivo(); #Iniciar la recepcion del archivo

#TODO SALIO BIEN
print "Content-type: text/html\n\n";
print "<h1>El archivo fue recibido correctamente</h1>\n";
exit(1);

sub recepcion_de_archivo{

my $nombre_en_servidor = $Input{'archivo'};
$nombre_en_servidor =~ s/ /_/gi;
$nombre_en_servidor =~ s!^.*(\\|\/)!!;

my $extension_correcta = 0;

foreach (@extensiones){
	if($nombre_en_servidor =~ /\.$_$/i){
		$extension_correcta = 1;
		last;
	}
}
$extension_correcta = 1;
if($extension_correcta){
	#Crear Temporal
	my $temporal = $dir.$nombre_en_servidor.".tmp";
	if (-e "$nombre_en_servidor") { #borrar si Existe
		#unlink("$nombre_en_servidor");
	}
	if (-e "$temporal") {#borrar si Existe
		unlink("$temporal");
	}
	my $content_length = $ENV{'CONTENT_LENGTH'};
	sysopen(FH, $temporal, O_RDWR | O_CREAT)
		or die "No se puede abrir numfile: $!";
	# autoflush FH
	my $ofh = select(FH); $| = 1; select ($ofh);
	flock(FH, LOCK_EX)
		or die "No se puede escribir numfile: $!";
	seek(FH, 0, 0)
		or die "No se puede volver a trás numfile : $!";
	#Escribimos el tamaño total en el archivo 
	print FH $content_length;	
	close(FH);#Cerramos el flujo
	sleep(1);

	#Creando Archivo en Servidor...
	open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo";
	binmode(OUTFILE); #Para no tener problemas en Windows

	#Transferimos byte por byte el archivo
	while (my $bytesread = read($Input{'archivo'}, my $buffer, 1024)) {
	print OUTFILE $buffer;
}

#Cerramos el archivo creado
close (OUTFILE);
#unlink("$temporal");
}else{
	print "Content-type: text/html\n\n";
	print "<h1>Extension incorrecta</h1>";
	print "Sólo se reciben archivo con extension:";
	print join(",", @extensiones);
	exit(0);
}
} #sub recepcion_de_archivo

Última edición por wannabe_aqp; 10/03/2009 a las 11:21 Razón: Solucion...