2009-11-26 62 views
7

Trong trang web dự án của tôi, nếu tôi nhấp vào liên kết, tệp PDF sẽ mở trong cửa sổ mới hoặc cửa sổ chính. Tôi cũng muốn một hộp xuất hiện nhắc người dùng tải xuống tệp thay vì mở tệp.Nhắc người dùng tải xuống tệp PDF thay vì mở

Có ai biết về sự kiện JavaScript onClick đơn giản sẽ thực hiện việc này, trong tất cả các trình duyệt, với cài đặt mặc định không?

Máy chủ của tôi dựa trên PHP.

Trả lời

13

Kể từ khi chỉnh sửa các quốc gia mà bạn đang sử dụng PHP, đây là cách để làm điều tương tự trong PHP:

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

tôi muốn cho phép điều này cho tất cả pdf trên trang web không cho bất kỳ pdf specfic –

+0

nhờ bạn đời - điều này đã giúp! – foxybagga

+1

Cũng rất hữu ích khi bao gồm kích thước của tệp hoặc trình duyệt có thể sẽ nói điều gì đó "không xác định" cho kích thước/thời gian còn lại để tải xuống. 'header ('Content-Length: 12345');' –

9

Vì bạn đã gắn thẻ nó .NET, tôi muốn nói đây là giải pháp tốt nhất của bạ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

Thay đổi kiểu Content-Type thành application/octet-stream. Tuy nhiên, bạn có thể thấy rằng một số trình duyệt sẽ suy ra từ phần mở rộng tệp mà nó sẽ mở dưới dạng PDF với trình xem PDF yêu thích của bạn.

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

Ngoài ra, thiết lập như sau:

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

Tôi cần cho tất cả pdf trên một trang web –

0

Nếu bạn là gặp lỗi tệp bị lỗi, hãy thử cách này:

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); 

Trường hợp $file là đường dẫn đầy đủ hoặc url của tệp.

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