C'est fou mais je ne sais pas comment faire, et à cause de la fréquence des mots, il est difficile de trouver ce dont j'ai besoin sur les moteurs de recherche. Je pense que cela devrait être facile à répondre.
Je veux un téléchargement de fichier simple, qui ferait la même chose que ceci:
<a href="file.doc">Download!</a>
Mais je veux utiliser un bouton HTML, par exemple l'un ou l'autre:
<input type="button" value="Download!">
<button>Download!</button>
De même, est-il possible de déclencher un simple téléchargement via JavaScript?
$("#fileRequest").click(function(){ /* code to download? */ });
Je ne cherche certainement pas un moyen de créer une ancre qui ressemble à un bouton, d'utiliser des scripts principaux ou de jouer avec les en-têtes de serveur ou les types MIME.
javascript
html
download
brentonstrine
la source
la source
Réponses:
Pour le bouton que vous pouvez faire
la source
Vous pouvez déclencher un téléchargement avec l'
download
attribut HTML5 .Où:
path_to_file
est un chemin d'accès qui se résout en une URL de la même origine . Cela signifie que la page et le fichier doivent partager le même domaine, sous-domaine, protocole (HTTP vs HTTPS) et port (si spécifié). Les exceptions sontblob:
etdata:
(qui fonctionnent toujours) etfile:
(qui ne fonctionnent jamais).proposed_file_name
est le nom du fichier dans lequel enregistrer. S'il est vide, le navigateur utilise par défaut le nom du fichier.Documentation: MDN , HTML Standard sur le téléchargement , HTML Standard sur
download
, CanIUsela source
download
ettarget="_blank"
semble suffisante pour couvrir la plupart des cas d'utilisation. Les navigateurs qui comprennent ledownload
traitent comme un téléchargement, sinon il est ouvert dans un nouvel onglet.HTML:
la source
Avec jQuery:
la source
Ancien thread mais il manque une solution js simple:
la source
Vous pouvez le faire avec "truc" avec iframe invisible. Lorsque vous lui définissez "src", le navigateur réagit comme si vous cliquiez sur un lien avec le même "href". Contrairement à la solution avec formulaire, il vous permet d'incorporer une logique supplémentaire, par exemple l'activation du téléchargement après expiration, lorsque certaines conditions sont remplies, etc.
Il est également très silencieux, il n'y a pas de nouvelle fenêtre / onglet clignotant comme lors de l'utilisation
window.open
.HTML:
Javascript:
la source
Version d'amorçage
Documenté dans la documentation de Bootstrap 4 et fonctionne également dans Bootstrap 3.
la source
Je pense que c'est la solution que vous cherchiez
J'ai un cas où mon Javascript a généré un fichier CSV. Puisqu'il n'y a pas d'URL distante pour le télécharger, j'utilise l'implémentation suivante.
la source
location.href
solutions.Qu'en est-il de:
la source
Vous pouvez masquer le lien de téléchargement et cliquer dessus.
la source
Si vous recherchez une solution JavaScript vanille (pas de jQuery) et sans utiliser l'attribut HTML5, vous pouvez essayer ceci.
la source
C'est ce qui a finalement fonctionné pour moi puisque le fichier à télécharger a été déterminé lors du chargement de la page.
JS pour mettre à jour l'attribut d'action du formulaire:
Appel de JS pour mettre à jour l'attribut d'action du formulaire:
Balise de formulaire avec le bouton d'envoi:
Les éléments suivants n'ont PAS fonctionné:
la source
Si vous ne pouvez pas utiliser le formulaire, une autre approche avec downloadjs convient bien. Downloadjs utilise l'API de fichier blob et html 5 sous le capot:
{downloadjs (url, nom de fichier)}) />
* c'est la syntaxe jsx / react, mais peut être utilisée en html pur
la source
N'importe où entre vos balises
<body>
et</body>
, insérez un bouton en utilisant le code ci-dessous:C'est sûr de fonctionner!
la source
Une autre façon de faire si vous avez une URL complexe telle que l'
file.doc?foo=bar&jon=doe
ajout d'un champ caché à l'intérieur du formulaireinspiré de la réponse @Cfreak qui n'est pas complète
la source
vous pouvez ajouter une balise sans texte mais avec un lien. et lorsque vous cliquez sur le bouton comme dans le code, exécutez simplement la fonction $ ("yourlinkclass"). click ().
la source
attribut de téléchargement
la source
Si vous utilisez la
<a>
balise, n'oubliez pas d'utiliser l'URL entière qui mène au fichier - c'est-à-dire:la source
Pour moi, ajouter un bouton au lieu d'un texte d'ancrage fonctionne très bien.
Ce n'est peut-être pas correct selon la plupart des règles, mais ça a l'air plutôt bien.
la source
<a>
les éléments ne peuvent pas contenir d'<button>
éléments.