2010-07-10 34 views
5

tôi muốn tạo một trang PHP trong đó cho thấy một thông báo nhưLàm cách nào để tạo trang 'Tải xuống sẽ bắt đầu ngay' của PHP?

Your download will begin shortly. 

If it does not start, please click here to restart the download 

ví dụ, cùng một loại trang đó tồn tại trên các trang web lớn.

Nó sẽ làm việc như thế này:

<a href="download.php?file=abc.zip">Click here</a> 

Khi người dùng nhấp liên kết đó, ông được dẫn dắt để download.php trong đó cho thấy anh ấy nhắn đó, và sau đó cung cấp các tập tin để tải về.

Tôi làm cách nào để thực hiện việc này?

Cảm ơn bạn rất nhiều!

Trả lời

2

Các liên kết cần phải làm một trong hai điều:

  • điểm trực tiếp đến tập tin trên máy chủ web của bạn
  • điểm đến một kịch bản PHP mà sẽ làm NOTHING nhưng thiết lập các tiêu đề phù hợp và phục vụ các tập tin làm nội dung trang. Không có đầu ra văn bản! Xem http://teddy.fr/blog/how-serve-big-files-through-php để biết cách phân phát tệp thực sự.

Một cách để trình duyệt bắt đầu tải xuống "một mình" là sử dụng thẻ META REFRESH.

Một cách khác là sử dụng JavaScript, như thế này (từ trang tải Firefox của Mozilla):

function downloadURL() { 
    // Only start the download if we're not in IE. 
    if (download_url.length != 0 && navigator.appVersion.indexOf('MSIE') == -1) { 
     // 5. automatically start the download of the file at the constructed download.mozilla.org URL 
     window.location = download_url; 
    } 
} 

// If we're in Safari, call via setTimeout() otherwise use onload. 
if (navigator.appVersion.indexOf('Safari') != -1) { 
    window.setTimeout(downloadURL, 2500); 
} else { 
    window.onload = downloadURL; 
} 
+0

Xem trang này ví dụ: http://www.mozilla.com/en-US/products/download.html? product = firefox-3.6.6 & os = win & lang = vi-US Kết quả đầu ra văn bản HAS đó và tệp được tải lên để tải xuống. Tôi muốn lặp lại một cái gì đó như thế. – Rohan

+0

Tuyệt vời, cảm ơn câu trả lời được cập nhật! Có nghĩa với tôi:-) – Rohan

2
<?php 
// download.php 
$url = 'http://yourdomain/actual/download?link=file.zip'; // build file URL, from your $_POST['file'] most likely 
?> 
<html> 
    <head> 
     <!-- 5 seconds --> 
      <meta http-equiv="Refresh" content="5; url=<?php echo $url;?>" /> 
    </head> 
    <body> 
     Download will start shortly.. or <a href="<?php echo $url;?>">click here</a> 
    </body> 
</html> 
0

Nếu bạn muốn chắc chắn các tập tin sẽ được tải về (như trái ngược với hiển thị trong trình duyệt hoặc plugin trình duyệt), bạn có thể đặt tiêu đề HTTP Content-Disposition. Ví dụ, để buộc các file PDF để tải về thay vì mở trong plugin trình duyệt:

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="foo.pdf"'); 
readfile('foo.pdf'); 
Các vấn đề liên quan