Pregunta

¿Cómo inicializo una descarga automática de un archivo en Internet Explorer?

Por ejemplo, en la página de descarga, quiero que aparezca el enlace de descarga y un mensaje: " Si la descarga no se inicia automáticamente .... etc " ;. La descarga debería comenzar poco después de que se cargue la página.

En Firefox esto es fácil, solo necesita incluir una metaetiqueta en el encabezado, <meta http-equiv="Refresh" content="n;url"> donde n es el número de segundos y url es la URL de descarga. Esto no funciona en Internet Explorer. ¿Cómo hago que esto funcione en los navegadores Internet Explorer?

¿Fue útil?

Solución

SourceForge usa un elemento <iframe> con el atributo src="" apuntando al archivo para descargar.

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

(Efecto secundario: sin redireccionamiento, sin JavaScript, la URL original permanece sin cambios).

Otros consejos

I hate cuando los sitios complican tanto la descarga y usa hacks en lugar de un buen viejo enlace .

Versión simple muerta:

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

¡Funciona! ¡En cada navegador!


Si desea descargar un archivo que generalmente se muestra en línea (como una imagen), HTML5 tiene un atributo download que fuerza la descarga del archivo. También le permite anular el nombre de archivo ( aunque hay una mejor manera de hacerlo ):

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

Versión con un " gracias " página:

Si desea mostrar " gracias " después de la descarga, luego use:

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

Función en que setTimeout podría ser más avanzada y p. descargue la página completa a través de AJAX (pero no navegue fuera de la página & # 8212; & nbsp; no toque window.location ni active otros enlaces).

El punto es que el enlace para descargar es real, puede ser copiado, arrastrado, interceptado por aceleradores de descarga, obtiene :visited color, no se vuelve a descargar si la página se deja abierta después de reiniciar el navegador, etc.

Eso es lo que uso para ImageOptim

Tuve un problema similar y ninguna de las soluciones anteriores funcionó para mí. Aquí está mi intento (requiere jquery):

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

Uso: simplemente agregue un atributo llamado data-auto-download al enlace que apunta a la descarga en cuestión:

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

Debería funcionar en todos los casos.

Recientemente lo resolví colocando el siguiente script en la página.

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

Estoy de acuerdo en que una meta-actualización sería mejor, pero si no funciona, ¿qué haces?

Un simple bit de jQuery resolvió este problema para mí.

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

En mi HTML, simplemente tengo

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

Todo lo que hace es esperar un segundo y medio, luego agregar el div con el iframe que se refiere al archivo que desea descargar. Cuando el iframe se actualiza en la página, su navegador descarga el archivo. Simple como eso. : D

Esto es lo que estoy usando en algunos sitios (requiere jQuery):

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

El archivo se descarga automáticamente después de 1 segundo.

Usé esto, parece funcionar y es simplemente JS, sin marco:

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>

NOTA: esto inicia el tiempo de espera en el momento en que se carga la página.

Funciona en Chrome, Firefox e IE8 y superior:

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

Verifiqué y encontré que funcionará al hacer clic en el botón escribiendo el evento onclick en la etiqueta de anclaje o el botón de entrada

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

¡Asegúrese de entregar el archivo sin un encabezado sin caché! IE tiene problemas con esto, si el usuario intenta & Quot; abrir & Quot; la descarga sin guardar primero.

De vuelta a las raíces, uso esto:

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

Quizás no sea compatible con WC3 pero funciona perfecto en todos los navegadores, no HTML5 / JQUERY / Javascript.

Saludos Tom :)

Uno más:

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

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

Esto pareció funcionar para mí, en todos los navegadores.

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

Creo que esto funcionará para ti. Pero los visitantes son fáciles si obtienen algo en segundos sin pasar más tiempo y, por lo tanto, también volverán a visitar su sitio. <a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>

Para aquellos que intentan activar la descarga usando un enlace dinámico , es difícil hacer que funcione de manera consistente en todos los navegadores.

Tuve problemas en IE10 + para descargar un PDF y utilicé @dandavis ' download función ( https://github.com/rndme/download ).

IE10 + necesita msSaveBlob.

Espero que esto funcione en todos los navegadores. También puede establecer el tiempo de descarga automática.

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

Demostración aquí

Buena solución jquery:

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

Incluso puede establecer un nombre de archivo diferente para descargar dentro de la etiqueta <a>:

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>.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top