2010-06-07 18:29 @812 |
|
|
bAsTeR
Perlero Nuevo
|
Registrado: 2008-10-28 11:29 @520 Ubicación: Chihuahua, Chih. Mexico Mensajes: 60
|
|
|
Forzar a navegador a descargar archivo
|
|
Hola,
Tengo una pregunta que no encuentro solución, o al menos a mi no me funciona.
Necesito un código para forzar al navegador a descargar un archivo, esto es, tengo un sistema donde subo archivos a mi servidor, estos pueden ser imágenes, audio y más, pero resulta que cuando quiero descargar un archivo éste se abre en el navegador, en el caso de las imágenes, en el reproductor de audio en el caso de audios, y así.
Por lo que necesito que el usuario al dar clic, se abra la ventana donde él escoja dónde guardar el archivo. Vi un código en PHP y traté de pasarlo a Perl pero no lo conseguí.
Alguna pista, amigos.
Gracias.
_________________ Say hello to my little friend!!!
|
2010-06-07 23:09 @006 |
|
|
 |
danimera
Vive para Perl en Español
|
Registrado: 2005-06-23 19:02 @834 Ubicación: Colombia Mensajes: 551
|
|
|
Re: Forzar a navegador a descargar archivo
|
No es una solución al problema, pero súbelos comprimidos. Ahí sí te permitirá descargar... No, mentiras... Puedes usar File::Download para hacer la descarga. Es recomendado para archivos grandes, pero es algo así: Using perl Syntax Highlighting my $dwn = File::Download->new({
file => $argfile,
overwrite => 1,
mode => ($opt{a} ? 'a' : 'b'),
});
print "Downloading $url\n";
print $dwn->download($url);
print $dwn->status();
_________________ 100% Telch - Perl Web Programming Cali PerlMongers: http://cali.pm.org
|
2010-06-08 06:39 @319 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10250
|
|
|
Re: Forzar a navegador a descargar archivo
|
Es muy sencillo... solo tienes que agregar Content-disposition: attachment; filename=ficheroa la cabecera HTTP de la respuesta a la petición que te hace el cliente. Si usas el módulo CGI, te vale con ponerlo en el header(): Using perl Syntax Highlighting print header (
-type => 'image/jpg',
-Content-disposition => "attachment; filename=$nombre_de_la_imagen",
-Content_length => -s $nombre_de_la_imagen,
); El Content_length es opcional, la mayoría de los casos, pero así el usuario (su sistema operativo) sabe cómo de largo es el fichero que estás transmitiendo. El valor que se le pasa a type es el MIME Type del fichero a transmitir. En el ejemplo, una imagen. El File::Download que te indica danimera es para justo lo contrario (descargarte un fichero), no para subir un fichero hacia el usuario.
_________________ JF^D Perl programming
|
2010-06-08 10:53 @495 |
|
|
bAsTeR
Perlero Nuevo
|
Registrado: 2008-10-28 11:29 @520 Ubicación: Chihuahua, Chih. Mexico Mensajes: 60
|
|
|
Re: Forzar a navegador a descargar archivo
|
Muy bien, Ya descarga el archivo pero el detalle es que lo descarga de 0 bytes. ¿Cuál puede ser el problema? Using perl Syntax Highlighting print header (
-type => "image/jpg",
-attachment => "tool.jpg",
-content_length => -s "tool.jpg",
);
_________________ Say hello to my little friend!!!
|
2010-06-08 11:25 @517 |
|
|
bAsTeR
Perlero Nuevo
|
Registrado: 2008-10-28 11:29 @520 Ubicación: Chihuahua, Chih. Mexico Mensajes: 60
|
|
|
Re: Forzar a navegador a descargar archivo
|
Sí, me faltaba leer el archivo. Using perl Syntax Highlighting print header (
-type => "image/jpg",
-attachment => "tool.jpg",
-content_length => -s "tool.jpg",
);
open(OUTFILE,"<tool.jpg");
binmode(OUTFILE);
while(<OUTFILE>){
print "$_";
}
close(OUTFILE);
Otra pregunta. En teoría, si quisiera hacerlo para todos los tipos de archivos, tendría que cambiar solamente el type en el header, ¿o qué tendría que hacer?
_________________ Say hello to my little friend!!!
|
|
Página 1 de 1
|
[ 8 mensajes ] |
|
| Reglas del Foro |
No puedes abrir nuevos temas en este Foro No puedes responder a temas en este Foro No puedes editar tus mensajes en este Foro No puedes borrar tus mensajes en este Foro No puedes enviar adjuntos en este Foro
|
|
Socializa |
 |
|