Hola a todos, les platico que tengo varios años usando perl y en particular varios años usando las mismas rutinas para subir archivos sin problemas. Pero ahora tengo un problema con el código que siempre había funcionado bien.
Actualmente uso instalaciones locales (en mi laptop) de Apache+MySQL+ActivePerl sobre Windows para trabajar off-line y subirlas a algún servidor posteriormente, pero desde hace casi un año que trabajo con Windows 7, las rutinas de subir archivos dejaron de funcionar, solo sube archivos con cero bytes y no genera ningún error incluso en los logs de apache.
Lo más extraño es que el mismo código si lo muevo a un servidor Linux o Windows Server (con apache, MySQL y Perl) funciona sin problemas. He buscado una y otra vez alguien que haya tenido el mismo problema y nada, he probado en diferentes equipos, reinstalando todo y sigue la misma constante, espero alguien me pueda ayudar.
Les anexo como referencia el código que utilizo, pero no creo que sea el código, supongo que debe ser algún problema de configuración, las versiones que tengo instaladas son las siguientes.
- Windows 7 x64
- Apache 2.2.15
- Active Perl 5.10.1 x64
Código:
# ------------------------------------------------------------
sub uploadFileB {
my ($sourceFile, $fileName, $dirUpload) = @_;
my $query = new CGI;
my $upload_filehandle = $query->upload($sourceFile);
open ( UPLOADFILE, ">$dirUpload/$fileName" ) or die "$!";
binmode UPLOADFILE;
while ( <$upload_filehandle> ) {
print UPLOADFILE;
}
close UPLOADFILE;
}
# ------------------------------------------------------------
sub uploadFile {
my ($sourceFile, $fileName, $dirUpload) = @_;
if ($sourceFile eq '') {return;}
$sourceFile =~ s/ /_/gi;
$sourceFile =~ s!^.*(\\|\/)!!;
open (OUTFILE, ">$dirUpload/$fileName") || die "No es posible crear el archivo";
binmode(OUTFILE);
while (my $bytesread = read($sourceFile, my $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
}
# ------------------------------------------------------------