Ich habe Text in einem versteckten Textbereich. Wenn auf eine Schaltfläche geklickt wird, möchte ich den Text als .txt
Datei zum Download anbieten . Ist dies mit AngularJS oder Javascript möglich?
javascript
angularjs
Nickponline
quelle
quelle
Antworten:
Sie können so etwas mit tun
Blob
.in Ihrem Controller:
um die URL zu aktivieren:
Bitte beachte, dass
Quelle: MDN
quelle
$scope.url
bei mir nicht funktioniert. Ich musstewindow.location
stattdessen verwenden.download
Attribut wird in keiner IE-Klicken Sie einfach auf die Schaltfläche, um den folgenden Code herunterzuladen.
in html
In der Steuerung
quelle
$http.get(...)
stellen Sie sicher, dass Sie dieresponseType:'arraybuffer'
hier erläuterten Einstellungen vornehmenVersuche dies
und besuchen Sie diese Seite, es könnte für Sie hilfreich sein :)
http://docs.angularjs.org/guide/
quelle
download
Attribut, das von keiner IE- oder Safari-Version unterstützt wird. Überprüfen Sie es hier: caniuse.com/#feat=downloadDies kann in Javascript erfolgen, ohne dass ein anderes Browserfenster geöffnet werden muss.
Ersetzen Sie 'url' durch den Link zu Ihrer Datei. Sie können dies in eine Funktion einfügen und mit aufrufen,
ng-click
wenn Sie den Download über eine Schaltfläche auslösen müssen.quelle
In unserem aktuellen Projekt hatten wir einen unsichtbaren iFrame und ich musste die URL für die Datei dem iFrame zuführen, um ein Download-Dialogfeld zu erhalten. Beim Klicken auf die Schaltfläche generiert der Controller die dynamische URL und löst ein $ scope-Ereignis aus, in dem ein von
directive
mir geschriebener Benutzer aufgelistet wird. Die Direktive hängt einen iFrame an den Body an, falls dieser noch nicht vorhanden ist, und legt das URL-Attribut darauf fest.EDIT: Hinzufügen einer Direktive
Diese Anweisung reagiert auf ein aufgerufenes Controller-Ereignis
downloadFile
So tun Sie es in Ihrem Controller
quelle
Sie können
location.href
einen Daten-URI festlegen , der die Daten enthält, die der Benutzer herunterladen möchte. Abgesehen davon glaube ich nicht, dass es eine Möglichkeit gibt, dies nur mit JavaScript zu tun.quelle
$location.href
geändert zu$window.location.href
Ich möchte nur hinzufügen, dass die Datei nicht heruntergeladen wird, weil sie unsicher ist: blob: null ... Wenn Sie mit der Maus über den Download-Button fahren, müssen Sie sie bereinigen. Zum Beispiel,
quelle
Wenn Sie auf dem Server Zugriff haben, sollten Sie die in dieser allgemeineren Frage beantworteten Header festlegen .
Wenn Sie die Kommentare zu dieser Antwort lesen, ist es ratsam, einen spezifischeren Inhaltstyp als den Oktett-Stream zu verwenden.
quelle
Ich hatte das gleiche Problem und verbrachte viele Stunden damit, verschiedene Lösungen zu finden, und jetzt verbinde ich alle Kommentare in diesem Beitrag. Ich hoffe, es wird hilfreich sein, meine Antwort wurde in Internet Explorer 11, Chrome und FireFox korrekt getestet.
HTML:
RICHTLINIE:
IM CONTROLLER:
IM DIENST:
BACKEND (am FRÜHLING):
quelle
Das hat bei mir im Winkel funktioniert:
quelle
data:text/plain;base64,${btoa(theStringGoesHere)}
Ich wollte keine statische URL. Ich habe AjaxFactory für alle Ajax-Operationen. Ich erhalte eine URL aus der Fabrik und binde sie wie folgt.
Danke @AhlemMustapha
quelle