2009-12-28 34 views
15

thể trùng lặp:
open download dialog with phpTạo tập tin tải về liên kết trong PHP

Tôi có một liên kết trong trang của tôi nói, <a href='test.pdf'>(Test.pdf)</a>. Khi tôi nhấp vào liên kết đó, hộp thoại tải xuống sẽ mở để tải xuống tệp đó. Bất cứ ai có thể giúp tôi trong việc thực hiện điều này trong PHP?

nhờ

+0

Ở đây bạn đi: http://stackoverflow.com/questions/985083/open-download-dialog-with-php http://stackoverflow.com/questions/732063/how-to-show-save-as- hộp thoại-sử dụng-php-cho-văn bản-tập tin – codaddict

+0

Đây không phải là một sự lừa đảo của những câu hỏi đó. Họ muốn tạo cuộc đối thoại tải xuống, cuộc hội thoại này muốn liên kết buộc tải xuống thay vì mở tệp trong trình duyệt. Trong đó có thể thuộc tính tải xuống html5 có thể làm điều đó ' ' – sidonaldson

Trả lời

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; 

Tên file trên như download.php

HTML:

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

Điều đó sẽ làm điều đó.

+0

tệp pdf đã tải xuống không mở tệp nói rằng tệp không được giải mã chính xác? –

+1

nó hoạt động cho tôi –

+0

@JacobRelkin Câu hỏi nhanh. Bạn có thể vượt qua trong đối số? Giống như download.php? Filecode = 1234 và sử dụng chúng để điền vào các chức năng tiêu đề? hoặc làm tiêu đề phải được gọi trước bất kỳ cuộc gọi nào khác. Ví dụ: '' '' $ filename = $ _get ['filecode'] '' '' – Caperneoignis

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

Trong trường hợp tệp PDF, hầu hết các trình duyệt sẽ tìm trình trợ giúp (acrobat) để tải nó trong trình duyệt của bạn theo mặc định. Bạn đang cố gắng để có được xung quanh hành vi mặc định này là dự đoán của tôi.

Cách đơn giản nhất để làm điều này (giả sử bạn đang ở trên hộp * nix với apache) là để tạo một file .htaccess trong thư mục bạn muốn có kết quả này và thêm dòng:

ứng dụng AddType/octet-stream .pdf

Điều này sẽ khiến bất kỳ tệp nào có đuôi .pdf để tải xuống theo mặc định. Bạn thậm chí có thể có một số tệp .pdf khi tải trang trong trình duyệt trong khi các tệp khác tải xuống bằng cách sử dụng chỉ thị FilesMatch (http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html).

Tôi nhận thấy câu hỏi ban đầu của bạn là "làm cách nào để làm điều đó với PHP" nhưng tôi nghĩ tôi sẽ đăng trong trường hợp bạn đang tìm kiếm một giải pháp đơn giản hơn, thanh lịch hơn. Hãy ghi nhớ bất kỳ chỉ thị nào bạn đưa vào tệp .htaccess cũng sẽ ảnh hưởng đến bất kỳ thư mục con nào bên dưới nó.

Các vấn đề liên quan