75

Internet Explorer でファイルの自動ダウンロードを初期化するにはどうすればよいですか?

例えば、ダウンロードページにダウンロードリンクと「ダウンロードが自動で始まらない場合・・・など」というメッセージを表示させたい。ページがロードされた直後にダウンロードが開始されます。

Firefox ではこれは簡単です。ヘッダーにメタ タグを含めるだけです<meta http-equiv="Refresh" content="n;url">。n は秒数でurl、ダウンロード URL です。これは Internet Explorer では機能しません。Internet Explorer ブラウザーでこれを機能させるにはどうすればよいですか?

4

18 に答える 18

109

SourceForgeは、ダウンロードするファイルを指す属性を持つ<iframe>要素を使用します。src=""

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

(副作用: リダイレクトなし、JavaScript なし、元の URL は変更されません。)

于 2008-10-01T08:34:41.370 に答える
52

サイトがダウンロードを非常に複雑にし、古き良きリンクの代わりにハックを使用するの嫌いです。

非常にシンプルなバージョン:

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

できます!すべてのブラウザで!


通常はインラインで表示されるファイル (画像など) をダウンロードする場合、HTML5downloadにはファイルのダウンロードを強制する属性があります。また、ファイル名をオーバーライドすることもできます (ただし、より良い方法があります)。

<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に使用するものです

于 2008-11-18T23:16:23.980 に答える
24

最近、次のスクリプトをページに配置して解決しました。

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

メタリフレッシュの方が良いという意見には同意するが、うまくいかない場合はどうすればよいか...

于 2008-10-01T08:29:23.130 に答える
22

同様の問題があり、上記の解決策はどれもうまくいきませんでした。これが私の試みです(jqueryが必要です):

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

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>

すべての場合に機能するはずです。

于 2012-03-07T17:45:36.790 に答える
8

簡単な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>

これは、1秒半待ってから、ダウンロードするファイルを参照するiframeをdivに追加するだけです。iframeがページに更新されると、ブラウザがファイルをダウンロードします。そのような単純な。:D

于 2011-06-25T04:59:38.277 に答える
6

Chrome、Firefox、IE8 以降で動作します:

var link = document.createElement('a');
document.body.appendChild(link);
link.href = url;
link.click();
于 2016-04-28T13:48:55.463 に答える
6

私はこれを使用しましたが、機能しているようで、単純な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>

注: これにより、ページが読み込まれた瞬間にタイムアウトが開始されます。

于 2012-10-04T00:50:09.193 に答える
5

これは私がいくつかのサイトで使用しているものです (jQuery が必要です)。

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

ファイルは 1 秒後に自動的にダウンロードされます。

于 2013-01-28T15:40:38.533 に答える
3

チェックしたところ、onclickイベントをアンカータグまたは入力ボタンに書き込むことでボタンクリックで動作することがわかりました

onclick='javascript:setTimeout(window.location=[File location], 1000);'
于 2012-06-16T05:44:36.273 に答える
3

ルーツに戻ると、私はこれを使用します:

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

WC3 に準拠していない可能性がありますが、HTML5/JQUERY/Javascript ではなく、すべてのブラウザーで完璧に動作します。

こんにちはトム:)

于 2016-01-14T14:42:59.293 に答える
3

これがすべてのブラウザで機能することを願っています。自動ダウンロードのタイミングも設定できます。

<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>
于 2017-08-01T06:43:20.593 に答える
2

キャッシュなしのヘッダーなしでファイルを提供するようにしてください!ユーザーが最初に保存せずにダウンロードを「開こう」とすると、IEに問題が発生します。

于 2008-10-03T18:11:38.750 に答える
1

これは私にとってはうまくいくようでした-すべてのブラウザで。

 <script type="text/javascript">
    window.onload = function(){
     document.location = 'somefile.zip';
    }
    </script>
于 2010-07-02T11:30:04.247 に答える
1

動的リンクを使用してダウンロードをトリガーしようとしている人にとって、ブラウザー間で一貫して動作させるのは難しい.

IE10+ で PDF をダウンロードする際に問題が発生し、@ dandavis の download機能 ( https://github.com/rndme/download ) を使用しました。

IE10+が必要msSaveBlobです。

于 2015-07-07T21:04:04.643 に答える
1

これでうまくいくと思います。しかし、訪問者は時間を費やすことなく数秒で何かを得ることができれば簡単です。 <a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>

于 2012-01-07T08:01:10.933 に答える