it-swarm.com.de

Wie starte ich den automatischen Download einer Datei im Internet Explorer?

Wie initialisiere ich einen automatischen Download einer Datei in Internet Explorer?

Zum Beispiel möchte ich, dass auf der Download-Seite der Download-Link angezeigt wird und die Meldung "Wenn der Download nicht automatisch startet .... etc" angezeigt wird. Der Download sollte kurz nach dem Laden der Seite beginnen.

In Firefox ist dies ganz einfach. Sie müssen lediglich ein Meta-Tag in die Kopfzeile einfügen: <meta http-equiv="Refresh" content="n;url"> wobei n die Anzahl der Sekunden und url die Download-URL ist. Dies funktioniert im Internet Explorer nicht. Wie mache ich das in Internet Explorer-Browsern?

68
Pop Catalin

SourceForge verwendet ein <iframe> Element mit dem src=""-Attribut, das auf die herunterzuladende Datei verweist.

<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>

(Nebeneffekt: keine Weiterleitung, kein JavaScript, ursprüngliche URL bleibt unverändert.)

104
devio

Ich hasse , wenn Websites das Herunterladen so erschweren, und verwende Hacks anstelle eines guten alten Links .

Ganz einfache Version:

<a href="file.Zip">Start automatic download!</a>

Es klappt! In jedem Browser!


Wenn Sie eine Datei herunterladen möchten, die normalerweise inline angezeigt wird (z. B. ein Bild), verfügt HTML5 über ein download -Attribut, das das Herunterladen der Datei erzwingt. Sie können auch den Dateinamen überschreiben ( obwohl es eine bessere Möglichkeit gibt ):

<a href="report-generator.php" download="result.xls">Download</a>

Version mit einer "Danke" Seite:

Wenn Sie nach dem Download "Danke" anzeigen möchten, verwenden Sie:

<a href="file.Zip" 
   onclick="if (event.button==0) 
     setTimeout(function(){document.body.innerHTML='thanks!'},500)">
 Start automatic download!
</a>

Die Funktion in diesem setTimeout könnte weiter fortgeschritten sein und z. lade die ganze Seite herunter über AJAX (aber navigiere nicht von der Seite weg - berühre nicht window.location oder andere Links aktivieren).

Der Punkt ist, dass der Download-Link echt ist, kopiert, gezogen, von Download-Beschleunigern abgefangen werden kann und :visited Farbe, wird nicht erneut heruntergeladen, wenn die Seite nach dem Neustart des Browsers geöffnet bleibt usw.

Das benutze ich für ImageOptim

50
Kornel

Ich habe es kürzlich gelöst, indem ich das folgende Skript auf der Seite platziert habe.

setTimeout(function () { window.location = 'my download url'; }, 5000)

Ich stimme zu, dass eine Meta-Aktualisierung besser wäre, aber wenn es nicht funktioniert, was machst du dann?.

23
ullmark

Ich hatte ein ähnliches Problem und keine der oben genannten Lösungen hat für mich funktioniert. Hier ist mein Versuch (erfordert JQuery):

$(function() {
  $('a[data-auto-download]').each(function(){
    var $this = $(this);
    setTimeout(function() {
      window.location = $this.attr('href');
    }, 2000);
  });
});

Verwendung: Fügen Sie einfach ein Attribut mit dem Namen data-auto-download Zu dem Link hinzu, der auf den betreffenden Download verweist:

<p>The download should start shortly. If it doesn't, click
<a data-auto-download href="/your/file/url">here</a>.</p>

Es sollte in allen Fällen funktionieren.

21
kikito

Ein einfaches Stück jQuery hat dieses Problem für mich gelöst.

$(function() {
   $(window).bind('load', function() {
      $("div.downloadProject").delay(1500).append('<iframe width="0" height="0" frameborder="0" src="[YOUR FILE SRC]"></iframe>'); 
   });
});

In meinem HTML habe ich einfach

<div class="downloadProject"></div>

Warten Sie nur anderthalb Sekunden, und hängen Sie dann das Div mit dem Iframe an, der auf die Datei verweist, die Sie herunterladen möchten. Wenn der Iframe auf der Seite aktualisiert wird, lädt Ihr Browser die Datei herunter. So einfach ist das. : D

7
CameronK

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

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

Ich habe das benutzt, scheint zu funktionieren und ist einfach JS, kein Framework:

Your file should start downloading in a few seconds. 
If downloading doesn't start automatically
<a id="downloadLink" href="[link to your file]">click here to get your file</a>.

<script> 
    var downloadTimeout = setTimeout(function () {
        window.location = document.getElementById('downloadLink').href;
    }, 2000);
</script>

HINWEIS: Dies startet die Zeitüberschreitung in dem Moment, in dem die Seite geladen wird.

5
Tyler

Dies ist, was ich in einigen Websites verwende (erfordert jQuery):

$(document).ready(function() {
    var downloadUrl = "your_file_url";
    setTimeout("window.location.assign('" + downloadUrl + "');", 1000);
});

Die Datei wird nach 1 Sekunde automatisch heruntergeladen.

5
Rabi

Einer noch :

var a = document.createElement('a');
a.setAttribute('href', dataUri);
a.setAttribute('download', filename);

var aj = $(a);
aj.appendTo('body');
aj[0].click();
aj.remove();
3
ZettaCircl

Ich habe überprüft und festgestellt, dass es beim Klicken auf eine Schaltfläche funktioniert, indem ein Ereignis in das Ankertag oder die Eingabetaste geschrieben wird

onclick='javascript:setTimeout(window.location=[File location], 1000);'
3
Vandana

Zurück zu den Wurzeln, ich benutze dies:

<meta http-equiv="refresh" content="0; url=YOURFILEURL"/>

Möglicherweise nicht WC3-konform, funktioniert aber in allen Browsern einwandfrei, kein HTML5/JQUERY/Javascript.

Grüße Tom :)

2
Tom

Stellen Sie sicher, dass Sie die Datei bereitstellen ohne einen No-Cache-Header! IE hat Probleme damit, wenn der Benutzer versucht, den Download zu "öffnen", ohne ihn zuvor zu speichern.

2
scunliffe

Ich denke, das wird für dich funktionieren. Aber Besucher sind einfach, wenn sie in Sekundenschnelle etwas bekommen, ohne mehr Zeit zu investieren, und werden daher auch Ihre Site erneut besuchen. <a href="file.Zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>

1
raheel

Dies schien für mich zu funktionieren - über alle Browser hinweg.

 <script type="text/javascript">
    window.onload = function(){
     document.location = 'somefile.Zip';
    }
    </script>
1
Dan

Für diejenigen, die versuchen, den Download über einen dynamischen Link auszulösen, ist es schwierig, ihn für alle Browser einheitlich zum Laufen zu bringen.

Ich hatte Probleme mit IE10 + beim Herunterladen einer PDF und verwendete @ dandavis 'download -Funktion ( https://github.com/rndme)/download ).

IE10 + benötigt msSaveBlob.

1
Nelu

Ich hoffe, das funktioniert mit allen Browsern. Sie können auch den Zeitpunkt für das automatische Herunterladen festlegen.

<html>
<head>
<title>Start Auto Download file</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$(function() {
$('a[data-auto-download]').each(function(){
var $this = $(this);
setTimeout(function() {
window.location = $this.attr('href');
}, 2000);
});
});
</script>
</head>
<body>
<div class="wrapper">
<p>The download should start shortly. If it doesn't, click
<a data-auto-download href="auto-download.Zip">here</a>.</p>
</div>
</body>
</html>

Demo hier

1
M. Lak

Schöne jquery Lösung:

jQuery('a.auto-start').get(0).click();

Sie können sogar einen anderen Dateinamen für den Download innerhalb des Tags <a> Festlegen:

Your download should start shortly. If not - you can use
<a href="/attachments-31-3d4c8970.Zip" download="attachments-31.Zip" class="download auto-start">direct link</a>.
0
Somerussian