txt - javascript descargar archivo automaticamente
¿Cómo iniciar la descarga automática de un archivo en Internet Explorer? (15)
¿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 de Internet Explorer?
¡Asegúrate de mostrar el archivo sin un encabezado sin caché! IE tiene problemas con esto, si el usuario intenta "abrir" la descarga sin guardar primero.
Comprobé y encontré que funcionará al hacer clic en el botón al escribir el evento onclick en la etiqueta Anclar o en el botón Entrada
onclick=''javascript:setTimeout(window.location=[File location], 1000);''
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 visitarán nuevamente su sitio. <a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML=''thanks!''},500)"> Start automatic download! </a>
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, sin HTML5 / JQUERY / Javascript.
Saludos Tom :)
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>
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.
Esto pareció funcionar para mí, en todos los navegadores.
<script type="text/javascript">
window.onload = function(){
document.location = ''somefile.zip'';
}
</script>
Funciona en Chrome, Firefox e IE8 y superiores:
var link = document.createElement(''a'');
document.body.appendChild(link);
link.href = url;
link.click();
Para aquellos que intentan desencadenar la descarga mediante un enlace dinámico , es complicado hacer que funcione de forma coherente en todos los navegadores.
Tuve problemas en IE10 + descargando un PDF y @dandavis'' función de download
@dandavis'' ( https://github.com/rndme/download ).
IE10 + necesita msSaveBlob
.
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 más agradable, pero si no funciona, ¿qué haces ...
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.
Un poco 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 agrega el div con el iframe refiriéndose al archivo que deseas descargar. Cuando el iframe se actualiza en la página, su navegador descarga el archivo. Simple como eso. :RE
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.
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 redirección, sin JavaScript, la URL original permanece sin cambios).
Odio cuando los sitios complican mucho la descarga y usan hacks en lugar de un buen enlace anterior .
Versión muerta simple:
<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 de download
que fuerza la descarga del archivo. También le permite anular el nombre del archivo ( aunque hay una mejor manera de hacerlo ):
<a href="report-generator.php" download="result.xls">Download</a>
Versión con una página de "agradecimiento":
Si desea mostrar "gracias" después de la descarga, utilice:
<a href="file.zip"
onclick="if (event.button==0)
setTimeout(function(){document.body.innerHTML=''thanks!''},500)">
Start automatic download!
</a>
La función en ese setTimeout
podría ser más avanzada y, por ejemplo, descargar la página completa a través de AJAX (pero no navegue fuera de la página, no toque window.location
ni active otros enlaces).
El punto es que el enlace para descargar es real, se puede copiar, arrastrar, interceptar mediante aceleradores de descarga, obtiene :visited
color :visited
, no volver a descargar si la página se deja abierta después de reiniciar el navegador, etc.