2010-07-10 6 views
5

Chciałbym stworzyć stronę PHP, który wyświetla komunikat jakJak mogę utworzyć PHP "Pobieranie rozpocznie się wkrótce" strona?

Your download will begin shortly. 

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

czyli tego samego typu strony, która istnieje na głównych stronach internetowych.

To będzie działać tak:

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

Gdy użytkownik kliknie, że link, jest on doprowadził do download.php który pokazuje mu, że wiadomość, a następnie oferuje plik do pobrania.

Jak mogę to zrobić?

Dziękuję bardzo!

Odpowiedz

2

Link musi zrobić jedną z dwóch rzeczy:

  • punkt bezpośrednio do pliku na serwerze WWW
  • punkt do skryptu PHP, który nie robi nic, ale ustawić odpowiednie nagłówki i służyć plik jako treść strony. Brak tekstu! Zobacz http://teddy.fr/blog/how-serve-big-files-through-php, aby dowiedzieć się, jak właściwie wyświetlić plik.

Jednym ze sposobów, aby przeglądarka zaczęła pobieranie "samodzielnie", jest użycie znacznika META REFRESH.

Innym sposobem jest użycie JavaScript, takich jak ten (z Firefox stronie pobierania Mozilli):

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

zobaczyć tę stronę, na przykład: http://www.mozilla.com/en-US/products/download.html? product = firefox-3.6.6 i os = win & lang = en-US To tekst wyjściowy, a jednak plik idzie do pobrania. Chcę powielić coś takiego. – Rohan

+0

Świetne, dzięki za zaktualizowaną odpowiedź! Dla mnie to ma sens:-) – 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

Jeśli chcesz mieć pewność, że plik zostanie pobrany (w przeciwieństwie do pokazano na przeglądarka lub wtyczka przeglądarki), możesz ustawić nagłówek HTTP Content-Disposition. Na przykład, aby wymusić PDF do pobrania zamiast otworu w wtyczce przeglądarki:

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="foo.pdf"'); 
readfile('foo.pdf'); 
Powiązane problemy