Heim >Web-Frontend >js-Tutorial >Wie kann ich mit Ajax Dateien in einer Struts2-Anwendung asynchron herunterladen?
Problem:
In einer Struts2-Anwendung ruft ein jQuery-Ajax-Aufruf binäre Stream-Daten ab stellt eine herunterzuladende Datei dar, aber Benutzer können die Datei nicht speichern lokal.
Lösung:
Moderner Browser-Ansatz (2019 und höher)
Für moderne Browser kann ein vereinfachter Ansatz verwendet werden übernommen werden:
Verwenden Sie die fetch()-API, um die abzurufen Datei:
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(resp => resp.blob())
Erstellen Sie eine Objekt-URL für die Datei:
.then(blob => { const url = window.URL.createObjectURL(blob);
Erstellen Sie ein verstecktes Element und legen Sie seine Attribute fest:
const a = document.createElement('a'); a.style.display = 'none'; a.href = url; a.download = 'todo-1.json';
Fügen Sie das Element an das Dokument an und klicken Sie darauf:
document.body.appendChild(a); a.click();
Entfernen Sie die Objekt-URL :
window.URL.revokeObjectURL(url);
Benachrichtigen Sie den Benutzer über den Erfolg Download:
alert('your file has downloaded!');
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWie kann ich mit Ajax Dateien in einer Struts2-Anwendung asynchron herunterladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!