Domanda

Come posso inizializzare un download automatico di un file in Internet Explorer?

Ad esempio, nella pagina di download, voglio che appaia il link per il download e un messaggio: " Se il download non si avvia automaticamente .... etc " ;. Il download dovrebbe iniziare poco dopo il caricamento della pagina.

In Firefox è facile, devi solo includere un meta tag nell'intestazione, <meta http-equiv="Refresh" content="n;url"> dove n è il numero di secondi e url è l'URL di download. Questo non funziona in Internet Explorer. Come faccio a farlo funzionare nei browser Internet Explorer?

È stato utile?

Soluzione

SourceForge utilizza un elemento <iframe> con l'attributo src="" che punta al file per download.

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

(Effetto collaterale: nessun reindirizzamento, nessun JavaScript, l'URL originale rimane invariato.)

Altri suggerimenti

I odio quando i siti complicano il download così tanto e uso gli hack al posto di un buon vecchio link .

Versione semplice morta:

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

Funziona! In ogni browser!


Se vuoi scaricare un file che di solito viene visualizzato in linea (come un'immagine), HTML5 ha un attributo download che forza il download del file. Ti consente anche di sovrascrivere il nome del file ( anche se esiste un modo migliore per farlo ):

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

Versione con un " grazie " Pagina:

Se si desidera visualizzare " grazie " dopo il download, quindi utilizzare:

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

La funzione in quanto setTimeout potrebbe essere più avanzata e ad es. scarica la pagina intera tramite AJAX (ma non allontanarti dalla pagina & # 8212; & nbsp; non toccare window.location o attivare altri collegamenti).

Il punto è che il link per il download è reale, può essere copiato, trascinato, intercettato dagli acceleratori di download, ottiene :visited colore, non riscaricare se la pagina viene lasciata aperta dopo il riavvio del browser, ecc.

Questo è quello che uso per ImageOptim

Ho avuto un problema simile e nessuna delle soluzioni sopra ha funzionato per me. Ecco il mio tentativo (richiede jquery):

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

Utilizzo: basta aggiungere un attributo chiamato data-auto-download al collegamento che punta al download in questione:

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

Dovrebbe funzionare in tutti i casi.

Di recente l'ho risolto inserendo il seguente script nella pagina.

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

Sono d'accordo che un meta-aggiornamento sarebbe più bello, ma se non funziona cosa fai ...

Un po 'di jQuery ha risolto questo problema per me.

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

Nel mio HTML, ho semplicemente

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

Tutto ciò che fa è attendere un secondo e mezzo, quindi aggiungere il div con l'iframe facendo riferimento al file che si desidera scaricare. Quando iframe viene aggiornato sulla pagina, il browser scarica il file. Semplice come quella. : D

Questo è quello che sto usando in alcuni siti (richiede jQuery) .:

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

Il file viene scaricato automaticamente dopo 1 secondo.

L'ho usato, sembra funzionare ed è semplicemente un JS, nessun framework:

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: questo avvia il timeout nel momento in cui la pagina viene caricata.

Funziona su Chrome, Firefox e IE8 e versioni successive:

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

Ho controllato e trovato, funzionerà sul clic sul pulsante scrivendo l'evento onclick sul tag Anchor o sul pulsante Input

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

Assicurati di pubblicare il file senza un'intestazione senza cache! IE ha problemi con questo, se l'utente prova a & Quot; apri & Quot; il download senza prima salvare.

Torna alle origini, io uso questo:

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

Forse non conforme a WC3 ma funziona perfettamente su tutti i browser, senza HTML5 / JQUERY / Javascript.

Saluti Tom :)

Ancora uno:

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

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

Questo sembra funzionare per me, su tutti i browser.

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

Penso che questo funzionerà per te. Ma i visitatori sono facili se hanno qualcosa in pochi secondi senza spendere più tempo e quindi visiteranno nuovamente il tuo sito. <a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>

Per coloro che cercano di attivare il download utilizzando un collegamento dinamico è difficile far funzionare in modo coerente i vari browser.

Ho avuto problemi con IE10 + durante il download di un PDF e ho usato la funzione @dandavis ' download ( https://github.com/rndme/download ).

IE10 + richiede msSaveBlob.

Spero che questo funzioni tutti i browser. Puoi anche impostare i tempi per il download automatico.

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

Demo qui

Bella soluzione jquery:

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

Puoi anche impostare un nome file diverso per il download all'interno del tag <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>.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top