如何开始在Internet Explorer中自动下载文件?

如何在Internet Explorer中初始化文件的自动下载?

例如,在下载页面中,我希望显示下载链接,并显示一条消息:“如果下载不会自动启动….”等。 下载应该在页面加载后不久开始。

在Firefox中这很容易,你只需要在标题中包含一个meta标签,其中n是秒数, url是下载URL。 这在Internet Explorer中不起作用。 如何在Internet Explorer浏览器中完成这项工作?

SourceForge使用带有src=""属性的<iframe>元素指向要下载的文件。

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

(副作用:没有redirect,没有JavaScript,原始URL保持不变。)

讨厌当网站下载这么多,并使用黑客而不是一个很好的旧链接 。

死简单的版本:

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

有用! 在每个浏览器中!


如果要下载通常以内联方式显示的文件(如图像),则HTML5具有强制下载文件的download属性。 它也允许你覆盖文件名( 尽pipe有一个更好的办法 ):

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

带有“感谢”页面的版本:

如果要在下载后显示“谢谢”,请使用:

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

setTimeout函数可能更先进,例如通过AJAX下载整个页面(但不要离开页面 – 不要触摸window.location或激活其他链接)。

重点在于下载链接是真实的,可以通过下载加速器进行复制,拖拽,拦截,获取:visited颜色,浏览器重启后页面处于打开状态时不重新下载等。

这就是我用于ImageOptim的

我最近通过在页面上放置下面的脚本来解决它。

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

我同意元刷新会更好,但如果它不起作用,你会怎么做…

我有一个类似的问题,没有上述解决scheme为我工作。 这是我的尝试(需要jQuery):

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

用法:只需将一个名为data-auto-download的属性添加到指向data-auto-download的链接即可:

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

它应该在所有情况下工作。

简单的一点jQuery解决了这个问题。

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

在我的HTML,我只是有

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

所有这一切都是等待一秒半,然后将div添加到指向您要下载的文件的iframe中。 当iframe更新到页面上时,浏览器将下载文件。 就那么简单。 :d

这是我在一些网站使用(需要jQuery):

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

该文件在1秒后自动下载。

我用这个,似乎工作,只是简单的JS,没有框架:

 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> 

注意:这会在页面加载的时候启动超时。

适用于Chrome,Firefox和IE8及以上版本:

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

我检查发现,它将button点击通过写入onclick事件锚定标记或inputbutton

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

请务必在没有caching头的情况下提供文件! 如果用户试图在不保存的情况下“打开”下载,IE就会遇到问题。

回到根源,我使用这个:

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

也许不符合WC3,但在所有浏览器上都是完美的,没有HTML5 / JQUERY / Javascript。

问候汤姆:)

这似乎适用于我 – 在所有浏览器。

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

我认为这会为你工作。 但是,如果访问者在几秒钟内得到某些东西而不花费更多时间,那么他们也很容易访问您的网站。 <a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>

对于那些试图通过dynamic链接触发下载的人来说,要使其在浏览器中始终如一地工作是非常困难的。

我在IE10下载PDF时遇到了麻烦,并使用了@dandavis的 downloadfunction( https://github.com/rndme/download )。

IE10 +需要msSaveBlob

我希望这会适用于所有的浏览器。 您也可以设置自动下载时间。

 <html> <head> <title>Start Auto Download file</title> <script src="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> 

在这里演示