154 Stimmen

Einfachste Möglichkeit, ein Download-Fenster zu öffnen, ohne die Seite zu verlassen

Was ist der beste browserübergreifende Weg, um einen Download-Dialog zu öffnen (nehmen wir an, wir können content-disposion:attachment in den Headern einstellen), ohne von der aktuellen Seite weg zu navigieren oder Popups zu öffnen, was im Internet Explorer (IE) 6 nicht gut funktioniert.

245voto

mozgras Punkte 2997

Dieses Javascript ist so gut, dass es kein neues Fenster oder eine neue Registerkarte öffnet.

window.location.assign(url);

142voto

0x000f Punkte 1500

7 Jahre sind vergangen und Ich weiß nicht, ob es für IE6 funktioniert oder nicht, aber dies führt zu OpenFileDialog in FF und Chrome.

var file_path = 'host/path/file.ext';
var a = document.createElement('A');
a.href = file_path;
a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);

44voto

cнŝdk Punkte 30135

Ich weiß, dass die Frage gestellt wurde 7 years and 9 months ago aber viele gepostete Lösungen scheinen nicht zu funktionieren, z.B. die Verwendung einer <iframe> funktioniert nur mit FireFox und funktioniert nicht mit Chrome .

Beste Lösung:

Das Beste funktionierende Lösung um ein Pop-up-Fenster zum Herunterladen von Dateien zu öffnen in JavaScript ist die Verwendung eines HTML Link-Element, ohne die Notwendigkeit, das Link-Element an die document.body wie in anderen Antworten angegeben.

Sie können die folgende Funktion verwenden:

function downloadFile(filePath){
    var link=document.createElement('a');
    link.href = filePath;
    link.download = filePath.substr(filePath.lastIndexOf('/') + 1);
    link.click();
}

In meiner Anwendung verwende ich es auf diese Weise:

downloadFile('report/xls/myCustomReport.xlsx');

Arbeits-Demo:

function downloadFile(filePath) {
  var link = document.createElement('a');
  link.href = filePath;
  link.download = filePath.substr(filePath.lastIndexOf('/') + 1);
  link.click();
}

downloadFile("http://www.adobe.com/content/dam/Adobe/en/accessibility/pdfs/accessing-pdf-sr.pdf");

Anmerkung:

  • Sie müssen die link.download Attribut, damit der Browser nicht die Datei nicht in einer neuen Registerkarte öffnet und das Download-Pop-up auslöst.
  • Dies wurde mit verschiedenen Dateitypen getestet (docx, xlsx, png, pdf, ...).

31voto

jao Punkte 17620

Ich füge dem Download-Link immer ein target="_blank" hinzu. Dadurch wird ein neues Fenster geöffnet, aber sobald der Benutzer auf "Speichern" klickt, wird das neue Fenster geschlossen.

26voto

George Claghorn Punkte 25699

Fügen Sie dies in den HTML-Kopfbereich ein und setzen Sie die url var auf die URL der herunterzuladenden Datei:

<script type="text/javascript">  
function startDownload()  
{  
     var url='http://server/folder/file.ext';    
     window.open(url, 'Download');  
}  
</script>

Dann fügen Sie dies in den Body ein, der den Download automatisch nach 5 Sekunden startet:

<script type="text/javascript">  
setTimeout('startDownload()', 5000); //starts download after 5 seconds  
</script> 

(Aus aquí .)

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