2009-12-28 20 views
15

Powiel możliwe:
open download dialog with phpWygeneruj link do pobrania pliku w PHP

mam łącza w moją stronę powiedzieć, <a href='test.pdf'>(Test.pdf)</a>. Po kliknięciu tego łącza należy otworzyć okno dialogowe pobierania, aby pobrać ten plik. Czy ktoś może mi pomóc w realizacji tego w PHP?

dzięki

+0

Tutaj możesz: http://stackoverflow.com/questions/985083/open-download-dialog-with-php http://stackoverflow.com/questions/732063/how-to-show-save-as- dialog-box-using-php-for-text-files – codaddict

+0

To nie jest powielacz tych pytań. Chcą, aby wygenerować dialogu pobraniu chce link, aby wymusić pobieranie zamiast otwierania pliku w przeglądarce. W którym można atrybut html5 pobierania może zrobić, że '' sidonaldson

Odpowiedz

32
$filename = 'Test.pdf'; // of course find the exact filename....   
header('Pragma: public'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Cache-Control: private', false); // required for certain browsers 
header('Content-Type: application/pdf'); 

header('Content-Disposition: attachment; filename="'. basename($filename) . '";'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize($filename)); 

readfile($filename); 

exit; 

Nazwa powyższy plik jako download.php

HTML:

<a href="download.php">Test.pdf</a> 

To powinno wystarczyć.

+0

pobrany plik pdf robi otwarcie mówi plik nie jest dekodowany prawidłowo? –

+1

to działa dla mnie –

+0

@JacobRelkin Szybkie pytanie. Czy potrafisz przekazywać argumenty? Podobnie jak download.php? Filecode = 1234 i użyć ich do wypełnienia funkcji nagłówka? lub czy nagłówki muszą być wywołane przed jakimkolwiek innym połączeniem. Przykład: '' '' $ filename = $ _GET [ 'filecode'] '' '' – Caperneoignis

15
<a href="test.pdf">test.pdf</a> 
2

W przypadku pliku PDF większość przeglądarek będzie szukała pomocnika (programu acrobat), aby domyślnie załadował go do przeglądarki. Próbujesz obejść to domyślne zachowanie to moje przypuszczenie.

Najprostszym sposobem, aby to zrobić (zakładając, że jesteś na polu * nix z Apache) jest stworzenie pliku .htaccess w katalogu, który chcesz mieć ten wynik i dodać linię:

aplikacji AddType/oktet-stream .pdf

Spowoduje to domyślne pobranie pliku z rozszerzeniem .pdf. Niektóre pliki .pdf można nawet załadować na stronę w przeglądarce, a inne pobierać za pomocą dyrektywy FilesMatch (http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html).

Zdaję sobie sprawę, że oryginalny pytanie „w jaki sposób mogę to zrobić w PHP”, ale pomyślałem, że pisać w razie czego szukasz prostszej, bardziej eleganckie rozwiązanie. Należy pamiętać, że wszelkie dyrektywy umieszczone w pliku .htaccess będą również miały wpływ na wszelkie podkatalogi znajdujące się pod nim.

Powiązane problemy