Как запустить автоматическую загрузку файла в Internet Explorer?

как инициализировать автоматическую загрузку файла в Internet Explorer?

например, на странице загрузки, я хочу, чтобы ссылка на скачивание появится и сообщение: "если загрузка не начнется автоматически .... п." Загрузка должна начаться вскоре после загрузки страницы.

в Firefox это легко, просто нужно включить мета тег в заголовке, <meta http-equiv="Refresh" content="n;url"> где n-количество секунд и url - это URL-адрес загрузки. Это не работает в обозреватель Internet Explorer. Как сделать эту работу в браузерах Internet Explorer?

15 ответов


SourceForge использует <iframe> с элементом src="" атрибут, указывающий на файл для загрузки.

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

(побочный эффект: нет перенаправления, нет JavaScript, исходный URL-адрес остается неизменным.)


Я ненавижу когда сайты усложняют загрузку так много и используйте хаки вместо старой доброй ссылки.

мертвая простая версия:

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

это работает! В каждом браузере!


если вы хотите загрузить файл, который обычно отображается встроенным (например, изображение), то HTML5 имеет download атрибут, который заставляет загружать файл. Он также позволяет переопределить имя файла (хотя есть лучший способ делать это):

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

версия со страницей "спасибо":

если вы хотите отобразить "спасибо" после загрузки, используйте:

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

у меня была аналогичная проблема, и ни одно из вышеперечисленных решений не сработало для меня. Вот моя попытка (требуется jquery):

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

использование: просто добавьте атрибут data-auto-download по ссылке, указывающей на загрузку в вопрос:

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

Он должен работать во всех случаях.


недавно я решил ее поместить следующий скрипт на странице.

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

Я согласен, что мета-обновление было бы лучше, но если оно не работает, что вы делаете...


простой бит jQuery решил эту проблему для меня.

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

в моем HTML у меня просто есть

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

все это делает, это подождать полторы секунды, а затем добавить div с iframe, ссылаясь на файл, который вы хотите загрузить. Когда iframe обновляется на странице, Ваш браузер загружает файл. Просто. : D


Это то, что я использую на некоторых сайтах (требует jQuery).:

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

файл загружается автоматически через 1 секунду.


я использовал это, кажется, работает и просто JS, без рамок:

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>

Примечание: это запускает тайм-аут в момент загрузки страницы.


работает на Chrome, firefox и IE8 и выше:

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

Я проверил и нашел, он будет работать на кнопке нажмите через запись события onclick для привязки тега или кнопки ввода

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

обязательно подайте файл без заголовок без кэша! IE имеет проблемы с этим, если пользователь пытается "открыть" загрузку без сохранения сначала.


назад к корням, я использую это:

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

возможно, не WC3 соответствует, но отлично работает во всех браузерах, без HTML5/JQUERY / Javascript.

Привет Тома :)


Это, казалось, работало для меня-во всех браузерах.

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

Я думаю, что это сработает для вас. Но посетители легко, если они получили что-то в секундах, не тратя больше времени, и, следовательно, они также снова посетят ваш сайт. <a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>


для тех, кто пытается запустить загрузку с помощью динамическая ссылка сложно заставить его работать последовательно в браузерах.

у меня были проблемы в IE10 + загрузка PDF и используется @dandavis' download функция (https://github.com/rndme/download).

в IE10+ должен msSaveBlob.


Я надеюсь, что это будет работать во всех браузерах. Вы также можете установить время автоматической загрузки.

<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>

Демо Здесь