PHP - Descargar ficheros en lugar de visualizar.

   
Vista:

Descargar ficheros en lugar de visualizar.

Publicado por Pablo (31 intervenciones) el 28/04/2013 13:50:22
Estoy haciendo una campaña de e-mailing.
En uno de los apartados del mensaje ofrezco al destinatario la posibilidad de bajarse un catálogo en pdf.
Como no quiero que lo visualize y lo guarde, porque casi nadie lo hace, y por problemas de refresco de Internet Explorer me dice que un usuario ha visitado mi página mil veces, he encontrato la forma de hacerlo a través de un archivo en php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$file = basename("catalogo.pdf");
$type = '';
 
if (is_file($file)){
	$size = filesize($file);
if (function_exists('mime_content_type')){
	$type = mime_content_type($file);
}	else if (function_exists('finfo_file')){
	$info = finfo_open(FILEINFO_MIME);
	$type = finfo_file($info,$file);
finfo_close($info);
}
if ($type == ''){
$type = "application/force-download";
}
 
	header("Content-Type: $type");
 	header("Content-Disposition: attachment; filename=$file");
 	header("Content-Transfer-Encoding: binary");
 	header("Content-Length: " . $size);
	readfile($file);
}else {
die("El archivo no existe.");
}


Y me funciona "bien". Es decir, me funciona bien en cualquier navegador que no sea Internet Explorer.
En IE me deja visualizarlo o descargarlo. Pero bueno, puedo admitir Internet Explorer como navegador de mis destinatarios.
Entonces he pensado en redirigir a otra página al usuario que se descargue el catálogo, para darle las gracias, ponernos a su disposición y demás.

Mi problema es que no sé como hacer esto, porque he probado con otro header:

1
header("location: agracias.html");


y lo que hace es redirigirlo directamente, sin bajar el archivo.
¿Cómo podría saber si el usuario eligió descargar?.
Ya he visto que comprobar que se lo ha descargado no es factible desde php.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder