Dom Ago 17, 2008 11:56 pm
|
 |
digitallxd
Perlero Nuevo

|
Registrado: 12 Jul 2007
Mensajes: 17
|
|
| Descargar archivos (no mostrarlos) desde el explorador |
|
|
Buenas.
Tengo un problema a la hora de hacer un link a un archivo de texto, y ésta es que cuando pongo <a href="fichero.." > ...., al clickar en el link, se me abre desde el explorador. Lo que yo necesito es que me salga un dialogo de descarga con el archivo a descargar, sencillamente eso, pero no sé bien bien qué debo poner, si es un tipo de link especial o un script que escriba algo especial tipo Content-type ...
Muchas gracias de antemano |
|
|
|

Lun Ago 18, 2008 4:02 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
|
|
|
|
|
Si el navegador lo abre, es porque por la extensión y tipo MIME del fichero, el navegador ya es capaz de mostrarlo.
Los navegadores siempre intentan mostrar los ficheros que son capaces de reconocer. Por eso existe la opción, en el menú contextual del ratón, de grabar el enlace como un fichero, en lugar de descargarlo por el navegador.
Los archivos de texto sí que los puede mostrar fácilmente el navegador, por lo que siempre intentará mostrarlos.
Ahora bien, hay un truco...
Hay que conseguir que el navegador no descargue directamente el fichero, sino que se baje un fichero intermedio. Ese fichero intermedio le indicará las cabeceras correctas del fichero que realmente queremos que se baje. Entre esas cabeceras incluiremos una de ellas que obligue a sacar la caja de diálogo de Guardar/Salvar.
He encontrado un ejemplo hecho para PHP (en inglés), pero es muy fácil de pasar para Perl.
El truco consiste en mandar el mismo Content-Type del fichero, pero añadiremos un Content-Disposition: attachment. Luego, abrimos el fichero y se lo enviamos al cliente como un torrente de bytes. |
|

Lun Ago 18, 2008 5:04 am
|
 |
digitallxd
Perlero Nuevo

|
Registrado: 12 Jul 2007
Mensajes: 17
|
|
|
|
|
¡Muchas gracias, explorer!
sip, la cosa va por ahí.
Os muestro lo que yo he encontrado en forma de script completo:
| Perl: | #!/usr/bin/perl
use CGI;
use warnings;
use CGI qw(param );
my $file=param ('file');
print "Content-Type:application/octet-stream; name=\"$file\"\r\n";
print "Content-Disposition: attachment; filename=\"$file\"\r\n\n";
my $aux;
open( FILE, "<ruta_del_fichero/$file");
while($aux= <FILE>)
{
print("$aux");
}
|
Así de simple, simplemente en este script lo llamamos download.pl?file=fichero y lo descargará sin problemas.
Más información aquí:
http://www.tutorialspoint.com/perl/perl_cgi.htm
donde pone How To Raise a "File Download" Dialog Box ?
De nuevo, ¡muchas gracias por tu ayuda! |
|

Lun Ago 18, 2008 5:43 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
|
|
|
|
|
| Deberías hacer una prueba, cambiando el octet-stream por el tipo mime del fichero. Así, el usuario tiene más información del tipo de fichero que está recibiendo. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|