2009-10-02 15 views
6

Cuando un usuario hace clic en el enlace "Descargar PDF", me gustaría que aparezca el mensaje de descarga y que el usuario pueda descargar el archivo.¿Cómo crear un enlace que desencadena la descarga de archivos?

Actualmente, el usuario acaba de ser transferido a la dirección del archivo PDF.

Por ejemplo:

<a..[what goes here??]..>Download PDF</a> 

Parece que hay una combinación de JavaScript & PHP necesario para hacer esto.

¿Alguien puede dar un ejemplo?

Respuesta

6

Si estás en Apache, puede dejar esto en su .htaccess:

<Files *.pdf> 
    Header set Content-Disposition attachment 
</Files> 

Esto enviará todos los documentos PDF para su descarga.mod_headers tiene que estar habilitado sin embargo.

+0

¡Eso es justo lo que estaba buscando, gracias! – edt

+0

De nada. :) – middus

+0

También hay un atributo 'download'. (No estoy seguro de qué navegadores son compatibles con esto, pero podría agregarlo de todos modos). – Darkwater

0

No está claro qué quiere decir con

Actualmente, el usuario se acaba de transferir a la dirección del archivo PDF.

Pero sugieren un enfoque simple:

<a href='http://example.com/download.pdf'>Download PDF</a> 

La elección de la descarga o apertura de un archivo es más un ajuste del navegador.

1

Puede forzar al navegador para guardar los contenidos enlazados mediante la adición de una cabecera HTTP de la respuesta del servidor Web:

Content-Disposition: attachment; filename=<default filename to save as> 

Por otro lado, yo realmente no veo el punto de anular el navegador del usuario configuración, que normalmente indica si los documentos PDF deben abrirse por defecto en el navegador, abrirse en un visor de PDF separado o guardarse en el disco.

+0

Aunque estoy de acuerdo, en general, que la preferencia del usuario debe ser honrado, puedo pensar en al menos un caso en el que se les debe alentar a descargar el archivo, en lugar de verlo en el navegador: situaciones en las que, probablemente, debería guarde una copia, como pólizas de seguro en línea o similares. –

0

No creo que hay una solución JavaScript/PHP mágico a su problema, el código HTML de vainilla:

<a href="docco.pdf" title="this is a link to a pdf">download the PDF</a> 

hará lo que sea necesario, dirigirá el navegador para solicitar el recurso Docco". pdf ", depende del navegador (y de cualquier complemento) hacer algo con esto.

Por ejemplo, hay un complemento de Firefox "PDF download" que ofrece al usuario la opción de qué hacer con una ventana emergente.

7

redirección a una página PHP con este código en él:

<?php 
header('Content-disposition: attachment; filename=movie.mpg'); 
header('Content-type: video/mpeg'); 
readfile('movie.mpg'); 
?> 

su código <a href deberá apuntar a una página específica, y readfile llamará a su recurso

Further reading

Justo Como nota al margen, estoy de acuerdo en que no debes anular la configuración de los navegadores, pero a veces, cuando el jefe te pregunta, solo tienes que hacerlo.

1

Usted puede utilizar el atributo HTML 5 download en su etiqueta.

<a href="http://love4cats.com/kitten-catalogue.pdf" download>Download the CATalogue</a> 

Debe verificar sus análisis y asegurarse de que su navegador de destino admite el atributo. Consulte la página caniuse.com entry para obtener ayuda del navegador.

2
You can also use the following code: 

<?php 
$file = filter_input(INPUT_GET, 'file'); 
$filename = basename($file); 
header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=\"{$filename}\";"); 
readfile("your file path {$file}"); 
?> 

Esto hará que cualquier extensión de archivo, tales como (.pdf, .docx, .zip, .csv, .txt, .html, .php y así sucesivamente ...) sin necesidad de abrir directamente en el navegador .

Cuestiones relacionadas