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.
Antworten
Zu viele Anzeigen?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);
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, ...).
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í .)
- See previous answers
- Weitere Antworten anzeigen