Heim >Backend-Entwicklung >PHP-Tutorial >Wie löst man einen Dateidownload mit AJAX aus: Direkter Download oder serverseitige Umleitung?

Wie löst man einen Dateidownload mit AJAX aus: Direkter Download oder serverseitige Umleitung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-17 00:12:24982Durchsuche

How to Trigger a File Download Using AJAX:  Direct Download or Server-Side Redirect?

Datei mit AJAX-Anfrage herunterladen

Beim Versuch, eine „Ajax-Download-Anfrage“ per Knopfdruck zu initiieren, ist es üblich, Code wie den zu implementieren unten:

var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php");
xhr.send();

Zusammen mit dem folgenden PHP Skript:

<?
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= file.txt");
header("Content-Transfer-Encoding: binary");    
readfile("file.txt");
?>

Dieser Ansatz führt jedoch möglicherweise nicht zum gewünschten Ergebnis. Um einen Download effektiv zu starten, sollten Sie die Implementierung einer der folgenden Alternativen in Betracht ziehen:

Option 1: Verwenden Sie das Attribut „Download“

In modernen Browsern wie Firefox und Chrome ist die Das Attribut „Download“ bietet eine bequeme Möglichkeit, Downloads von einer Webseite aus zu starten, ohne dass eine serverseitige Interaktion erforderlich ist. Hier ist ein Beispiel:

<a href="file.txt" download="file.txt">Download</a>

Option 2: Navigieren Sie mit AJAX oder Window.location zum Download-Skript

Wenn das Attribut „Download“ nicht geeignet ist Option können Sie AJAX oder window.location verwenden, um zum Download-Skript zu navigieren. Mit AJAX können Sie eine asynchrone Anfrage ausführen und dann die Erfolgsrückruffunktion verwenden, um zum Download-Skript umzuleiten:

$.ajax({
    url: 'download.php',
    type: 'POST',
    success: function() {
        window.location = 'download.php';
    }
});

Alternativ können Sie einfach window.location verwenden, um zum Download-Skript zu navigieren:

window.location = 'download.php';

Während der AJAX-Ansatz eine gewisse Flexibilität bietet, ist die Verwendung von window.location in der Regel effizienter und unkomplizierter.

Das obige ist der detaillierte Inhalt vonWie löst man einen Dateidownload mit AJAX aus: Direkter Download oder serverseitige Umleitung?. 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