2009-10-02 33 views
6

Khi người dùng nhấp vào liên kết "Tải xuống PDF", tôi muốn lời nhắc tải xuống xuất hiện và để người dùng có thể tải xuống tệp.Cách tạo liên kết kích hoạt tải xuống tệp?

Hiện tại, người dùng chỉ được chuyển đến địa chỉ của tệp PDF.

Ví dụ:

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

Dường như có một sự kết hợp của JavaScript & PHP cần thiết để làm điều này.

Có ai cho ví dụ không?

Trả lời

6

Nếu bạn đang ở trên Apache, bạn có thể thả này vào .htaccess của bạn:

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

này sẽ gửi tất cả các tài liệu PDF như tải.mod_headers phải được bật mặc dù.

+0

Đó chỉ là những gì tôi đang tìm kiếm, cảm ơn! – edt

+0

Bạn được chào đón. :) – middus

+0

Ngoài ra còn có thuộc tính 'tải xuống'. (Không chắc chắn trình duyệt nào hỗ trợ tính năng này, nhưng bạn vẫn có thể thêm trình duyệt đó.) – Darkwater

0

Nó không rõ ràng những gì bạn có ý nghĩa bởi

Hiện nay, người dùng được chỉ chuyển đến địa chỉ của tập tin PDF.

Nhưng tôi đề nghị một phương pháp đơn giản:

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

Sự lựa chọn của tải hoặc mở một tập tin là nhiều hơn một thiết lập của trình duyệt.

1

Bạn có thể buộc các trình duyệt để lưu các nội dung liên quan bằng cách thêm một tiêu đề HTTP đến phản ứng máy chủ web:

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

Ở phía bên kia, tôi không thực sự nhìn thấy điểm trong trọng trình duyệt của người dùng cấu hình, thường cho biết liệu tài liệu PDF có nên được mở mặc định trong trình duyệt hay không, được mở trong trình xem PDF riêng hoặc được lưu vào đĩa.

+0

Trong khi tôi đồng ý, nói chung rằng sở thích của người dùng nên được tôn trọng, tôi có thể nghĩ đến ít nhất một trường hợp họ nên được khuyến khích tải tệp xuống, thay vì xem trong trình duyệt: lưu một bản sao, chẳng hạn như các chính sách bảo hiểm trực tuyến hoặc tương tự. –

0

Tôi không tin rằng có một giải pháp javascript/PHP huyền diệu cho vấn đề của bạn, HTML vani:

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

sẽ làm những gì là cần thiết, nó sẽ trực tiếp trình duyệt yêu cầu tài nguyên "docco. pdf ", tùy thuộc vào trình duyệt (và bất kỳ plugin nào) để làm điều gì đó với điều này.

Ví dụ: có addon firefox "PDF download" cung cấp cho người dùng lựa chọn phải làm gì với cửa sổ bật lên.

7

Redirect đến một trang PHP với mã này vào nó:

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

đang <a href của bạn sẽ cần để trỏ đến một trang cụ thể, và readfile sẽ gọi tài nguyên của bạn

Further reading

Just như là một lưu ý phụ, tôi đồng ý rằng bạn không nên ghi đè lên một cài đặt trình duyệt, nhưng đôi khi khi ông chủ hỏi, bạn chỉ cần làm.

1

Bạn có thể sử dụng thuộc tính HTML5 download trên thẻ của mình.

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

Bạn nên kiểm tra phân tích và đảm bảo rằng trình duyệt mục tiêu của bạn hỗ trợ thuộc tính. Xem trang caniuse.com entry để được hỗ trợ trình duyệt.

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}"); 
?> 

này sẽ nhắc nhở bất kỳ phần mở rộng tập tin như (.pdf, .docx, .zip, .csv, .txt, .html, .php và vân vân ...) mà không cần trực tiếp mở vào trình duyệt mới .

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