2009-11-26 7 views
7

En el sitio de mi proyecto, si hago clic en un vínculo, el PDF se abre en una ventana nueva o principal. Bueno, quiero que aparezca una casilla que le pida al usuario que descargue el archivo en lugar de abrirlo.Pedirle al usuario que descargue el archivo PDF en lugar de abrir

¿Alguien sabe de un simple evento JavaScript onClick que hará esto, en todos los navegadores, con la configuración predeterminada?

Mi servidor está basado en PHP.

Respuesta

13

Desde su edición estados que usted está usando PHP, aquí está cómo hacer lo mismo en PHP:

<?php 
header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
readfile('original.pdf'); 
?> 
+0

quiero habilitar esto para todos los pdf en el sitio no para ningún pdf specfic –

+0

gracias compañero - ¡esto ayudó! – foxybagga

+1

Es útil incluir también el tamaño del archivo, o el navegador probablemente dirá algo "desconocido" para el tamaño/tiempo que queda para descargar. 'header ('Content-Length: 12345');' –

9

Puesto que usted ha etiquetado que .NET, yo diría que esta es la mejor solución:

Response.ClearContent(); 
Response.ClearHeaders(); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf"); 
Response.WriteFile(Server.MapPath("~/files/myFile.pdf")); 
Response.Flush(); 
Response.Close(); 
3

Cambia el tipo de contenido a la secuencia de aplicación/octeto. Sin embargo, es posible que algunos navegadores deduzcan de la extensión de archivo que debe abrirse como un PDF con su visor de PDF favorito.

Response.ContentType = "application/octet-stream"; 

Además, establezca lo siguiente:

Response.AppendHeader("content-disposition", "attachment; filename=" + name); 
+0

Necesito todo el pdf en un sitio –

0

Si está obtener un error de archivo dañado intente esto:

header('Pragma: public'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Cache-Control: private', false); 
header('Content-Type: application/pdf'); 
header('Content-disposition: attachment; filename=' . basename($file)); 
header("Content-Transfer-Encoding: binary"); 
header('Content-Length: ' . filesize($file)); // provide file size 
header('Connection: close'); 
readfile($file); 

Donde $file es la ruta completa o url del archivo.

Cuestiones relacionadas