Cuando ponemos para su descarga ficheros, dependiendo de la extensión de los mismos el navegador puede abrirlos en vez de forzar su descarga. Tal es el caso de ficheros con extensiones como .doc, .html o .pdf. Por ejemplo, para forzar la descarga de un fichero PDF:

  1. // El content type del fichero.(el tipo de contenido del fichero esto es conocido como MIME/TYPE
  2. header("Content-Type: application/pdf");
  3. //Le decimos a nuestro nevagador que vamos a decargar el fichero con Content-Disposition: attachment;
  4. //y le damos un nombre filename=nombrefichero.pdf
  5. header("Content-Disposition: attachment; filename=nombrefichero.pdf");
  6. //para descargar otro tipo de fichero solo hay que cambiar el MIME/TYPE y el nombre del fichero filename= por el tipo correcto y el nombre del archivo.

Aunque otra forma y para no complicarnos con un solo MIME/TYPE podemos usar el siguiente script para descargar cualquier tipo de archivo (fichero)

  1. header("Content-type: application/octet-stream");
  2.     header("Content-Disposition: attachment; filename=archivo.ext");

Por ultimo me permito mostrarles el como leer el archivo y mandarlo al navegador.

  1. header("Content-type: application/octet-stream");
  2.     header("Content-Disposition: attachment; filename=archivo.ext");
  3.     $fp=fopen("archivo.ext", "r");
  4.     fpassthru($fp);

Y asi de facil podemos forzar a la descarga de cualquier fichero.