[bcn-pm] download archivo en cgi
carlos escribano
ces at buki.dyndns.org
Sun Jun 29 09:32:53 CDT 2003
Help, please,...!
Quiero que un script retorne un archivo. Estoy atascado y no se ver qué hago
mal; En los numerosos resultados de Google no encuentro sustanciales
difrencias con este código, y he probado cambiar bastantes pequeñas cosas.
La parte conflictiva del script es:
open DOWNLOAD, $dir . '/' . $filename . '.tar.gz';
binmode(DOWNLOAD);
binmode STDOUT;
select STDOUT; $|=1;
my @info = stat(DOWNLOAD);
my $length = $info[7];
my $blksize = $info[11] || 16384;
print "Content-type: application/x-zip-compressed\n";
print "Content-Disposition: attachment; filename=\"". $filename .
".tar.gz\"\n";
print "Content-Length:$length\n\n";
my $buffer;
while (!eof(DOWNLOAD)) {
read(DOWNLOAD, $buffer, $blksize);
print $buffer;
}
close(DOWNLOAD);
La primera es que mozilla se empeña en escribir un archivo tipo MIME
text/x-perl, con el nombre del script que llama, y no el archivo y tipo
correspondientes.
La segunda es que el browser (probado con mozilla y lynx) se empeña en recibir
el archivo incluida la cabecera. Si el original tar.gz tenía 673 bytes, según
indica precisamente la cabecera (Content-Length:673) lo guardado en el disco
contiene 793 bytes, y con un editor hexadecimal se puede comprobar que
efectivamente los bytes sobrantes son precisamente la cabecera HTTP, que se
añade al principio del archivo.
¿Alguien tiene alguna idea de dónde está mal el código || falta algo ?
Gracias
Carlos
More information about the Barcelona-pm
mailing list