Comment initialiser un téléchargement automatique d'un fichier dans Internet Explorer?
Par exemple, dans la page de téléchargement, je souhaite que le lien de téléchargement apparaisse et que le message suivant s'affiche: "Si le téléchargement ne démarre pas automatiquement, etc.". Le téléchargement devrait commencer peu de temps après le chargement de la page.
Dans Firefox, c'est facile, il vous suffit d'inclure une balise méta dans l'en-tête, <meta http-equiv="Refresh" content="n;url">
où n est le nombre de secondes et url
est l’URL de téléchargement. Cela ne fonctionne pas dans Internet Explorer. Comment faire pour que cela fonctionne dans les navigateurs Internet Explorer?
SourceForge utilise un <iframe>
élément avec le src=""
attribut pointant vers le fichier à télécharger.
<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>
(Effet secondaire: pas de redirection, pas de JavaScript, l'URL d'origine reste inchangée.)
Je déteste lorsque les sites compliquent autant le téléchargement et tilisez des hacks au lieu d'un bon vieux lien .
<a href="file.Zip">Start automatic download!</a>
Ça marche! Dans tous les navigateurs!
Si vous souhaitez télécharger un fichier qui est généralement affiché en ligne (tel qu'une image), alors HTML5 a un attribut download
qui force le téléchargement du fichier. Il vous permet également de remplacer le nom de fichier ( bien qu'il existe un meilleur moyen de le faire ):
<a href="report-generator.php" download="result.xls">Download</a>
Si vous souhaitez afficher "merci" après le téléchargement, utilisez:
<a href="file.Zip"
onclick="if (event.button==0)
setTimeout(function(){document.body.innerHTML='thanks!'},500)">
Start automatic download!
</a>
La fonction dans laquelle setTimeout
pourrait être plus avancée et par exemple. télécharger la page complète via AJAX (mais ne naviguez pas en dehors de la page - ne touchez pas window.location
ou activer d’autres liens).
Le fait est que le lien à télécharger est réel, peut être copié, traîné, intercepté par les accélérateurs de téléchargement, obtient :visited
couleur, ne pas télécharger à nouveau si la page est laissée ouverte après le redémarrage du navigateur, etc.
Je l'ai récemment résolu en plaçant le script suivant sur la page.
setTimeout(function () { window.location = 'my download url'; }, 5000)
Je suis d'accord pour dire qu'une méta-actualisation serait plus intéressante, mais si cela ne fonctionne pas, que faites-vous ...
J'ai eu un problème similaire et aucune des solutions ci-dessus n'a fonctionné pour moi. Voici mon essai (nécessite jquery):
$(function() {
$('a[data-auto-download]').each(function(){
var $this = $(this);
setTimeout(function() {
window.location = $this.attr('href');
}, 2000);
});
});
Utilisation: Ajoutez simplement un attribut appelé data-auto-download
au lien pointant vers le téléchargement en question:
<p>The download should start shortly. If it doesn't, click
<a data-auto-download href="/your/file/url">here</a>.</p>
Cela devrait fonctionner dans tous les cas.
Un peu de jQuery a résolu ce problème pour moi.
$(function() {
$(window).bind('load', function() {
$("div.downloadProject").delay(1500).append('<iframe width="0" height="0" frameborder="0" src="[YOUR FILE SRC]"></iframe>');
});
});
Dans mon HTML, j'ai simplement
<div class="downloadProject"></div>
Cela ne fait qu’attendre une seconde et demie, puis ajouter la div avec l’iframe en référence au fichier que vous voulez télécharger. Lorsque l'iframe est mis à jour sur la page, votre navigateur télécharge le fichier. Aussi simple que cela. :RÉ
Fonctionne sur Chrome, Firefox et IE8 et supérieur:
var link = document.createElement('a');
document.body.appendChild(link);
link.href = url;
link.click();
Je l'ai utilisé, semble fonctionner et est juste simple, aucun cadre:
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>
NOTE: cela commence la temporisation au moment où la page est chargée.
C’est ce que j’utilise dans certains sites (nécessite jQuery):
$(document).ready(function() {
var downloadUrl = "your_file_url";
setTimeout("window.location.assign('" + downloadUrl + "');", 1000);
});
Le fichier est téléchargé automatiquement après 1 seconde.
Un de plus :
var a = document.createElement('a');
a.setAttribute('href', dataUri);
a.setAttribute('download', filename);
var aj = $(a);
aj.appendTo('body');
aj[0].click();
aj.remove();
J'ai vérifié et trouvé, cela fonctionnera sur un clic de bouton en écrivant un événement onclick dans un tag d'ancrage ou un bouton d'entrée
onclick='javascript:setTimeout(window.location=[File location], 1000);'
De retour aux racines, j'utilise ceci:
<meta http-equiv="refresh" content="0; url=YOURFILEURL"/>
Peut-être pas conforme à WC3 mais fonctionne parfaitement sur tous les navigateurs, pas de HTML5/JQUERY/Javascript.
Salutations Tom :)
Assurez-vous de servir le fichier sans un en-tête sans cache! IE a des problèmes avec cela, si l'utilisateur essaie "d'ouvrir" le téléchargement sans enregistrer au préalable.
Je pense que cela fonctionnera pour vous. Mais les visiteurs sont faciles s'ils obtiennent quelque chose en quelques secondes sans dépenser plus de temps. Ils visiteront donc à nouveau votre site. <a href="file.Zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>
Cela a semblé fonctionner pour moi - à travers tous les navigateurs.
<script type="text/javascript">
window.onload = function(){
document.location = 'somefile.Zip';
}
</script>
Pour ceux qui essaient de déclencher le téléchargement en utilisant un lien dynamique , il est difficile de le faire fonctionner de manière cohérente sur tous les navigateurs.
J'ai eu du mal à IE10 + à télécharger un PDF et utilisé @ dandavis 'download
function ( https://github.com/rndme/télécharger ).
IE10 + a besoin de msSaveBlob
.
J'espère que cela fonctionnera avec tous les navigateurs. Vous pouvez également définir le moment du téléchargement automatique.
<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>
Belle solution jQuery:
jQuery('a.auto-start').get(0).click();
Vous pouvez même définir un nom de fichier différent pour le téléchargement dans <a>
tag:
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>.