Je veux pouvoir télécharger un fichier donné en appuyant sur un bouton. Le fichier sera fourni via un appel API
Pour l'instant, je l'aurai dans mon stockage local. Donc, mon dossier est quelque chose comme:
<a download="sample.csv" onclick="download()"></a> function download|(){ .....code that calls the `api` }
Comment puis-je créer un link
téléchargement? J'ai essayé jusqu'à présent avec: <a download="sample.csv"></a>
J'ai également essayé d'utiliser un événement onclick
:
rootFolder -JS file -HTML file -download file (`sample.csv`)
Je ne sais pas comment ces 2 s'adaptent: the download
API de the download
s'il y en a une et le gestionnaire d'événements click
si vous prévoyez de faire une logique supplémentaire lors du téléchargement.
3 Réponses :
Vous pouvez fournir le lien vers cette fonction pour télécharger le fichier:
function downloadURI(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; link.click(); }
Et si le fichier est dans mon stockage local, il fonctionne tout de même?
qu'entendez-vous exactement par stockage local? n'utilisez-vous aucun serveur local?
Vous pouvez le faire via HTML <a href="/path/to/sample.csv"></a>
, mais si vous devez le faire dans JS, il y a https://github.com/eligrey/FileSaver.js / bibliothèque.
étant donné que la réponse de @saibbyweb ne fonctionne pas dans tous les navigateurs au moment où j'écris ceci, je recommande une autre solution similaire, testée et fonctionnant dans la dernière version (au moment de la rédaction) Firefox, Chrome, Opera, Edge, Safari, Safari mobile, Chrome mobile :
function downloadUrl(url){ window.open(url, '_self'); }
Inutile de dire que vous pouvez également ouvrir des liens dans de nouveaux onglets avec _blank au lieu de _self, mais vous risquez de surprendre les bloqueurs de fenêtres contextuelles en ouvrant de nouveaux onglets / fenêtres avec Javascript.
«Pour l'instant, je l'aurai dans mon stockage local» - voulez-vous dire développeur.mozilla.org/ en-US/docs/Web/API/Window/ localStorage , ou parlez-vous simplement du fichier situé dans le système de fichiers du serveur à l'endroit où vous l'avez décrit?
Le fichier est situé dans le système de fichiers du serveur à l'endroit que j'ai décrit.
D'accord, alors il vous suffit de faire les choses correctement, et cela devrait fonctionner… Vous devez toujours utiliser l'attribut
href
du lien pour faire référence au fichier;download
est un attribut supplémentaire que vous ajoutez. developer.mozilla.org/en-US/docs/Web/HTML/Element/a#Attribut es