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