482 Stimmen

Datei herunterladen mit JavaScript/jQuery

Ich habe eine sehr ähnliche Anforderung spezifiziert ici .

Ich möchte, dass der Browser des Benutzers einen Download manuell startet, wenn $('a#someID').click();

Aber ich kann die window.href Methode, da sie den aktuellen Seiteninhalt durch die Datei ersetzt, die Sie herunterzuladen versuchen.

Stattdessen möchte ich den Download in einem neuen Fenster/Tab öffnen. Wie ist das möglich?

20voto

Rohit Parte Punkte 2505

Dies kann hilfreich sein, wenn Sie nicht zu einer anderen Seite navigieren müssen. Dies ist eine Basis-Javascript-Funktion, die auf jeder Plattform verwendet werden kann, deren Backend in Javascript ist.

window.location.assign('any url or file path')

19voto

corbacho Punkte 8264

Wenn Sie bereits jQuery verwenden, können Sie es nutzen, um ein kleineres Snippet zu erstellen
Eine jQuery-Version von Andrews Antwort:

var $idown;  // Keep it outside of the function, so it's initialized once.
downloadURL : function(url) {
  if ($idown) {
    $idown.attr('src',url);
  } else {
    $idown = $('<iframe>', { id:'idown', src:url }).hide().appendTo('body');
  }
},
//... How to use it:
downloadURL('http://whatever.com/file.pdf');

11voto

EL missaoui habib Punkte 1047

Funktioniert mit Chrome, Firefox und IE8 und höher.

var link=document.createElement('a');
document.body.appendChild(link);
link.href=url ;
link.click();

11voto

Abk Punkte 1949

Ich habe das untenstehende Snippet verwendet und es funktioniert in den meisten Browsern, allerdings nicht im IE getestet.

let data = JSON.stringify([{email: "test@domain.com", name: "test"}, {email: "anothertest@example.com", name: "anothertest"}]);

let type = "application/json", name = "testfile.json";
downloader(data, type, name)

function downloader(data, type, name) {
    let blob = new Blob([data], {type});
    let url = window.URL.createObjectURL(blob);
    downloadURI(url, name);
    window.URL.revokeObjectURL(url);
}

function downloadURI(uri, name) {
    let link = document.createElement("a");
    link.download = name;
    link.href = uri;
    link.click();
}

Update

function downloadURI(uri, name) {
    let link = document.createElement("a");
    link.download = name;
    link.href = uri;
    link.click();
}

function downloader(data, type, name) {
    let blob = new Blob([data], {type});
    let url = window.URL.createObjectURL(blob);
    downloadURI(url, name);
    window.URL.revokeObjectURL(url);
}

10voto

Aaron Lelevier Punkte 18400

Einfaches Beispiel mit einer iframe

function downloadURL(url) {
    var hiddenIFrameID = 'hiddenDownloader',
        iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;
};

Rufen Sie dann einfach die Funktion auf, wo immer Sie wollen:

downloadURL('path/to/my/file');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X