2010-05-08 12 views
161

J'ai une idée de base de HTML. Je veux créer le lien de téléchargement dans mon exemple de site Web, mais je n'ai aucune idée de la façon de le créer. Comment faire un lien pour télécharger un fichier plutôt que de le visiter?Comment puis-je créer un lien de téléchargement en HTML?

+6

L'accepter marque pour cette question doit être commuté. –

Répondre

119

Cette réponse est rejetée. Nous avons maintenant l'attribut download comme décrit here.

Si par « le lien de téléchargement » vous voulez dire un lien vers un fichier à télécharger, utilisez

<a href="http://example.com/files/myfile.pdf" target="_blank">Download</a> 

le target=_blank fera une nouvelle fenêtre du navigateur apparaît avant que le téléchargement commence. Cette fenêtre sera généralement fermée lorsque le navigateur découvre que la ressource est un téléchargement de fichier.

Notez que les types de fichiers connus du navigateur (par exemple les images JPG ou GIF) seront généralement ouverts dans le navigateur.

Vous pouvez essayer d'envoyer les en-têtes appropriés pour forcer un téléchargement, tel que décrit par exemple. here. (script côté serveur ou l'accès aux paramètres du serveur est nécessaire pour cela.)

+1

pourquoi ne pas utiliser l'attribut de téléchargement, si vous obtenez un fichier comme un fichier jpg, il va télécharger, au lieu de simplement ouvrir. – Ben

+2

S'il vous plaît omettre le "target = '_ blank'", car cela ne fonctionnera pas dans IE. Avez-vous même testé? – Tara

+3

@Dudeson veuillez préciser ce qui "ne fonctionnera pas" et quelle (s) version (s) d'IE dont vous parlez. (Il est maintenant prudent d'utiliser l'approche décrite ci-dessous pour la réponse beaucoup plus récente de TIIUNDER.) –

9

Un lien de téléchargement serait un lien vers la ressource que vous souhaitez télécharger. Il est construit de la même manière que tout autre lien serait:

<a href="path to resource.name of file">Link</a> 

<a href="files/installer.exe">Link to installer</a> 
-2

Vous aimez cette

<a href="www.yoursite.com/theThingYouWantToDownload">Link name</a> 

Ainsi, un name.jpg de fichier sur un site example.com ressemblerait à ceci

<a href="www.example.com/name.jpg">Image</a> 
+0

Le problème avec ce dernier est qu'il ouvrira dans le navigateur, ne pas être offert pour le téléchargement et l'enregistrement. –

+7

Ne fonctionne pas; le navigateur le traitera comme un lien relatif à './www.example.com/name.jpg' - vous devez utiliser' http: // 'pour les liens absolus avec le domaine spécifié. –

+0

@Delan bien repéré. –

8

pour créer un lien vers le fichier, faire la même chose que tout autre lien de la page:

<a href="...">link text</a> 

Pour forcer les choses à télécharger, même si elles ont un plugin intégré (Windows + QuickTime = beurk), vous pouvez utiliser dans votre htaccess/apache2.conf:

AddType application/octet-stream EXTENSION 
+0

Merci! C'est beaucoup plus simple et c'est sur tout le serveur!: D J'ai trouvé ce lien qui élabore un peu plus. Je vous remercie. http://www.htaccess-guide.com/adding-mime-types/ –

+0

Cela fera que tous les fichiers de ce type de téléchargement seulement. Bien si c'est ce que vous voulez, mais pourrait causer des ajustements si vous oubliez et que vous voulez un autre fichier de ce type à afficher dans le navigateur au lieu de télécharger. – TecBrat

330

Dans les navigateurs modernes qui prennent en charge HTML5, les éléments suivants est possible:

<a href="link/to/your/download/file" download>Download link</a> 

vous pouvez également utiliser ceci:

<a href="link/to/your/download/file" download="filename">Download link</a> 

cela vous permettra de changer le nom du fichier téléchargé réellement.

+0

J'ai utilisé le même code pour télécharger le fichier PFD et j'ai testé dans tous les navigateurs tous sont support mais en safari ce code ne fonctionne pas safari au lieu de télécharger le fichier pdf ouvert dans un nouvel onglet. –

+14

Non pris en charge dans Safari et IE. http://www.w3schools.com/tags/att_a_download.asp –

+4

@SulemanMirza "Navigateurs modernes avec HTML5", tout va bien. –

18

En plus (ou en remplacement) au comportement attribut HTML5 <a download déjà mentionné,
le téléchargement du navigateur sur le disque peut également être déclenchée par ce qui suit en-tête de réponse http:

Content-Disposition: attachment; filename=ProposedFileName.txt; 

Ce fut le façon de faire avant HTML5 (et fonctionne toujours avec les navigateurs supportant HTML5).

+1

Mais cela nécessite une mise en œuvre côté serveur, correct? – Lombas

+0

@Lombas Oui, seul le serveur peut définir les en-têtes de réponse http. – Myobis

+0

Est-ce la réponse complète? Vous devez également envoyer un en-tête Content Type et lire le fichier pour forcer le téléchargement. Peut vouloir et cela à votre réponse. Réponse complète ici: http://stackoverflow.com/a/1465631/2757916. –

4

Ce thread est probablement ancien maintenant, mais cela fonctionne en html5 pour mon fichier local.

Pour pdfs:

<p><a href="file:///........example.pdf" download target="_blank">test pdf</a></p>

Cela devrait ouvrir le pdf dans une nouvelle fenêtre et vous permettre de le télécharger (dans Firefox au moins). Pour tout autre fichier, il suffit de faire le nom de fichier. Pour les images et la musique, vous voudriez les stocker dans le même répertoire que votre site. Donc, ce serait comme

<p><a href="images/logo2.png" download>test pdf</a></p> 
0

L'attribut de téléchargement est nouveau pour la balise <a> en HTML5

<a href="http://www.odin.com/form.pdf" download>Download Form</a>
ou
<a href="http://www.odin.com/form.pdf" download="Form">Download Form</a>

Je préfère le premier, il est préférable en ce qui concerne toute extension.

0

L'attribut de téléchargement ne fonctionne pas dans IE, il ignore complètement le "téléchargement". Le téléchargement ne fonctionne pas sur Firefox si le href pointe vers un site distant. L'exemple d'Odin ne fonctionne donc pas sur Firefox 41.0.2.

0

je sais que je suis en retard, mais ce que je suis arrivé après 1 heure de recherche

<?php 
     $file = 'file.pdf'; 

    if (! file) { 
     die('file not found'); //Or do something 
    } else { 
     if(isset($_GET['file'])){ 
     // Set headers 
     header("Cache-Control: public"); 
     header("Content-Description: File Transfer"); 
     header("Content-Disposition: attachment; filename=$file"); 
     header("Content-Type: application/zip"); 
     header("Content-Transfer-Encoding: binary"); 
     // Read the file from disk 
     readfile($file); } 
    } 

    ?> 

et pour le lien téléchargeable Je l'ai fait

<a href="index.php?file=file.pdf">Download PDF</a> 
Questions connexes