Heim >Web-Frontend >js-Tutorial >Wie löst man Dateidownloads mit Ajax und einer Struts2-Aktion aus?

Wie löst man Dateidownloads mit Ajax und einer Struts2-Aktion aus?

Linda Hamilton
Linda HamiltonOriginal
2024-12-19 14:26:10773Durchsuche

How to Trigger File Downloads with Ajax and a Struts2 Action?

Asynchroner Dateidownload mit Ajax

Im bereitgestellten Szenario stoßen Sie auf ein Problem, bei dem eine Struts2-Aktion zum Herunterladen von Dateien verwendet wird, aber jQuery Der Aufruf post() ruft die Datei als Binärstream ab, anstatt ein Fenster zum Herunterladen der Datei zu öffnen. Ziel dieses Artikels ist es, das Problem anzugehen und eine Lösung bereitzustellen, um das Datei-Download-Fenster aufzurufen.

Der Schlüssel zum Ermöglichen von Datei-Downloads mit Ajax liegt in der Verwendung des Content-Disposition-Antwortheaders. Dieser Header sollte auf Anhang gesetzt sein; filename={fileName}, wobei {fileName} den gewünschten Dateinamen darstellt. Indem Sie diesen Header festlegen, weisen Sie den Browser an, den Benutzer mit einem Datei-Download-Fenster aufzufordern.

Um den Content-Disposition-Header in Ihrer Struts2-Aktion dynamisch zu ändern, können Sie einen Interceptor verwenden. Hier ist ein Beispiel, wie Sie dies tun können:

public class DownloadInterceptor implements Interceptor {

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setHeader("Content-Disposition", "attachment; filename=" + actionInvocation.getArgs()[0]); // Replace with your code
        return invocation.invoke();
    }

    @Override
    public void destroy() {}

    @Override
    public void init() {}
}

Sobald Sie den Interceptor implementiert haben, können Sie ihn auf die Download-Aktion anwenden, um den Content-Disposition-Header dynamisch festzulegen.

Von Wenn Sie diese Schritte kombinieren, können Sie Ihre Struts2-Anwendung so konfigurieren, dass sie Dateien asynchron mit Ajax herunterlädt und Benutzern ermöglicht, die Dateien lokal zu speichern.

Das obige ist der detaillierte Inhalt vonWie löst man Dateidownloads mit Ajax und einer Struts2-Aktion aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn