2010-07-10 3 views
5

J'aimerais créer une page PHP qui affiche un message commeComment puis-je créer une page PHP "Télécharger va commencer sous peu"?

Your download will begin shortly. 

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

à savoir, le même type de page qui existe sur les sites principaux.

Il fonctionne comme ceci:

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

Lorsque l'utilisateur clique sur ce lien, il est amené à download.php qui lui montre ce message, et offre le fichier à télécharger.

Comment est-ce que je peux faire ceci?

Merci beaucoup!

Répondre

2

Le lien doit faire l'une des deux choses:

    point de
  • directement dans le fichier sur votre serveur web
  • point de
  • à un script PHP qui ne fera que mettre les en-têtes appropriés et servir le fichier comme le corps de la page. Pas de sortie de texte! Voir http://teddy.fr/blog/how-serve-big-files-through-php pour savoir comment réellement servir le fichier.

Une façon d'amener le navigateur à démarrer le téléchargement «seul» consiste à utiliser une balise META REFRESH.

Une autre façon est d'utiliser JavaScript, comme celui-ci (à partir de la page de téléchargement de Mozilla Firefox):

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

Voir cette page par exemple: http://www.mozilla.com/en-US/products/download.html? product = firefox-3.6.6 & os = win & lang = fr-FR Cela a une sortie de texte, et pourtant le fichier monte en téléchargement. Je veux reproduire quelque chose comme ça. – Rohan

+0

Super, merci pour la réponse mise à jour! Cela a du sens pour moi :-) – 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

Si vous voulez être sûr que le fichier sera téléchargé (par opposition à celle indiquée à la navigateur ou un plugin de navigateur), vous pouvez définir l'en-tête HTTP Content-Disposition. Par exemple, pour forcer les fichiers PDF à télécharger au lieu d'ouvrir dans le plug-in du navigateur:

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="foo.pdf"'); 
readfile('foo.pdf'); 
Questions connexes