2010-02-23 6 views
1

Comment lancer automatiquement un fichier à télécharger lorsqu'un utilisateur clique sur un lien? Par exemple lorsqu'un utilisateur clique sur un lien qui lui permet de télécharger une image.Téléchargement automatique du fichier sur le site Web?

Comme il fonctionne sur www.iStockphoto.com

+0

Peut-être que ma question devrait indiquer: Comment puis-je démarrer automatiquement le téléchargement d'un fichier image lorsque l'utilisateur ouvre une page? Je pense que c'est ce qui se passe sur Istock. En d'autres termes, l'utilisateur clique sur un lien qui mène à une page html, puis le téléchargement du fichier imagefile commence. – jamietelin

Répondre

2
<a href="path-to-file.jpeg">link</a> 

En plus d'un en-tête content-disposition qui en fait une pièce jointe.

+0

C'est la bonne réponse. (Plus de +1 restant aujourd'hui) – Layke

+0

COuld vous donnez-moi un exemple de l'en-tête content-disposition? Puis-je changer cet en-tête avec PHP? – jamietelin

+0

@jamietelin - Il y a une section entière de la spécification que j'ai liée aux "Exemples" marqués, et oui, vous pouvez la changer avec PHP (bien que vous deviez alors passer manuellement le reste des données pour le fichier) – Quentin

1

Voici la réponse que je cherchais. J'espère que cela aidera d'autres personnes à chercher une réponse.

Créez un fichier appelé downloadfile.php par exemple et ajoutez ce qui suit;

$file = $_GET['file']; 
if (file_exists($file)) { 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename='.basename($file)); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($file)); 
     ob_clean(); 
     flush(); 
     readfile($file); 
     exit; 
    } 

Ensuite, vous pouvez ajouter un lien vers ce fichier comme ceci:

<a href="downloadfile.php?file=dog.jpg">Download image!</a> 

Bien sûr, cela est juste un exemple. Cela peut être fait de différentes façons. Les syntaxes importantes à retenir sont header() et readfile()

+0

déjà répondu. Définissez simplement l'en-tête content-disposition sur la pièce jointe. C'est tout. Le reste est facultatif. – BalusC

+0

Je sais, c'est ma propre question. Je voulais juste rendre la réponse plus claire. Pas tout le monde aime lire 11 pages de texte :) (Aussi dans David Dorward réponse, je trouve cela un peu confus; link jamietelin

Questions connexes