Question

Comment initialiser le 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 avec le message suivant: & "Si le téléchargement ne démarre pas automatiquement ... etc &"; Le téléchargement devrait commencer peu après le chargement de la page.

Dans Firefox, rien de plus simple, 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 l’URL de téléchargement. Cela ne fonctionne pas dans Internet Explorer. Comment faire en sorte que cela fonctionne dans les navigateurs Internet Explorer?

Était-ce utile?

La solution

SourceForge utilise un élément <iframe> avec l'attribut src="" pointant vers le fichier vers 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.)

Autres conseils

Je déteste lorsque les sites compliquent tant le téléchargement et utilisent des hacks au lieu d'un bon vieux lien .

Version simple morte:

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

Cela fonctionne! Dans tous les navigateurs!

Si vous souhaitez télécharger un fichier généralement affiché en ligne (une image, par exemple), HTML5 possède un attribut download qui force le téléchargement du fichier. Il vous permet également de remplacer le nom de fichier ( même s’il existe un meilleur moyen de le faire ):

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

Version avec un " merci " page:

Si vous souhaitez afficher " merci " après le téléchargement, utilisez ensuite:

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

Fonction dans cette setTimeout pourrait être plus avancé et par exemple. Téléchargez la page complète via AJAX (mais ne quittez pas la page & # 8212; & nbsp; ne touchez pas window.location ou n'activez aucun autre lien).

Le lien est que le lien à télécharger est réel, peut être copié, glissé, intercepté par des accélérateurs de téléchargement, prend :visited de la couleur, ne re-télécharge pas si la page est laissée ouverte après le redémarrage du navigateur, etc.

C'est ce que j'utilise pour ImageOptim

J'avais un problème similaire et aucune des solutions ci-dessus ne fonctionnait 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.

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

Un simple morceau 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 que patienter une seconde et demie, puis ajoutez la div avec l’iframe faisant référence au fichier que vous souhaitez télécharger. Lorsque l'iframe est mis à jour sur la page, votre navigateur télécharge le fichier. Aussi simple que cela. : D

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.

Je l'ai utilisé, semble fonctionner et est juste simple JS, pas de 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>

REMARQUE: le délai d’attente commence au moment où la page est chargée.

Fonctionne sur Chrome, Firefox et IE8 et versions ultérieures:

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

J'ai vérifié et trouvé, cela fonctionnera en cliquant sur un bouton en écrivant un événement onclick dans une balise d'ancrage ou un bouton d'entrée

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

Assurez-vous de servir le fichier sans avoir un en-tête sans cache! IE a des problèmes avec cela, si l'utilisateur essaie & "; Ouvrir &"; le téléchargement sans enregistrer au préalable.

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

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();

Cela semblait fonctionner pour moi - sur tous les navigateurs.

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

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>

Pour ceux qui tentent de déclencher le téléchargement à l'aide d'un lien dynamique , il est difficile de le faire fonctionner de manière cohérente sur tous les navigateurs.

J'ai eu du mal à télécharger un fichier PDF dans IE10 + et à utiliser la @dandavis ' download ( https://github.com/rndme/download ).

IE10 + a besoin de msSaveBlob.

J'espère que cela fonctionnera avec tous les navigateurs. Vous pouvez également définir le délai de 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>

La démo ici

Belle solution jQuery:

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

Vous pouvez même définir un nom de fichier différent à télécharger dans <a> balise:

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>.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top