J'ai du texte dans une zone de texte cachée. Lorsqu'un bouton est cliqué, je souhaite que le texte soit proposé au téléchargement sous forme de .txt
fichier. Est-ce possible en utilisant AngularJS ou Javascript?
javascript
angularjs
nickponline
la source
la source
Réponses:
Vous pouvez faire quelque chose comme ça en utilisant
Blob
.dans votre contrôleur:
afin d'activer l'URL:
Veuillez noter que
Source: MDN
la source
$scope.url
n'a pas fonctionné pour moi. J'ai dû utiliser à lawindow.location
place.download
attribut n'est pris en charge dans aucune version d'IE ou de Safari bien que caniuse.com/#feat=downloadCliquez simplement sur le bouton pour télécharger en utilisant le code suivant.
en html
Dans le contrôleur
la source
$http.get(...)
assurez-vous de définirresponseType:'arraybuffer'
comme expliqué ici: stackoverflow.com/questions/21628378/…Essaye ça
et visitez ce site, cela pourrait vous être utile :)
http://docs.angularjs.org/guide/
la source
download
attribut qui n'est toujours pris en charge par aucune version d'IE ni de Safari. Découvrez-le ici: caniuse.com/#feat=downloadCela peut être fait en javascript sans avoir besoin d'ouvrir une autre fenêtre de navigateur.
Remplacez «url» par le lien vers votre fichier. Vous pouvez mettre cela dans une fonction et l'appeler avec
ng-click
si vous devez déclencher le téléchargement à partir d'un bouton.la source
Dans notre projet actuel au travail, nous avions un iFrame invisible et je devais fournir l'URL du fichier à l'iFrame pour obtenir une boîte de dialogue de téléchargement. En cliquant sur le bouton, le contrôleur génère l'URL dynamique et déclenche un événement $ scope où une personnalisation que
directive
j'ai écrite est listée. La directive ajoutera un iFrame au corps s'il n'existe pas déjà et y définit l'attribut url.EDIT: Ajout d'une directive
Cette directive répond à un événement du contrôleur appelé
downloadFile
donc dans votre contrôleur vous faites
la source
Vous pouvez définir
location.href
un URI de données contenant les données que vous souhaitez permettre à l'utilisateur de télécharger. En plus de cela, je ne pense pas qu'il y ait moyen de le faire avec juste JavaScript.la source
$location.href
changé en$window.location.href
Je voudrais juste ajouter qu'au cas où il ne téléchargerait pas le fichier à cause de unsafe: blob: null ... lorsque vous survolez le bouton de téléchargement, vous devez le nettoyer. Par exemple,
la source
Si vous avez accès à sur le serveur, envisagez de définir des en-têtes comme répondu à cette question plus générale .
En lisant les commentaires sur cette réponse, il est conseillé d'utiliser un Content-Type plus spécifique que l'octet-stream.
la source
J'ai eu le même problème et j'ai passé de nombreuses heures à trouver des solutions différentes, et maintenant je rejoins tous les commentaires de cet article, j'espère que cela vous sera utile, ma réponse a été correctement testée sur Internet Explorer 11, Chrome et FireFox.
HTML:
DIRECTIVE:
DANS LE CONTRÔLEUR:
EN SERVICE:
BACKEND (au PRINTEMPS):
la source
Cela a fonctionné pour moi en angulaire:
la source
data:text/plain;base64,${btoa(theStringGoesHere)}
Je ne voulais pas d'URL statique. J'ai AjaxFactory pour faire toutes les opérations ajax. J'obtiens l'URL de l'usine et je la lie comme suit.
Merci @AhlemMustapha
la source