你如何在javascript中自动下载文件?

Posted

技术标签:

【中文标题】你如何在javascript中自动下载文件?【英文标题】:How do you automatically download a file in javascript? 【发布时间】:2016-08-22 13:26:36 【问题描述】:

所以,我一直在寻找并尝试找到一种方法,以便在有人访问我的网站时自动下载文件。我试过使用a标签下载,它可以工作,你只需要点击下载它。就这样……

<a href="pic.jpg" download>Download</a>

但我不希望那样。我希望它无需单击即可自动下载。我需要一些帮助!

【问题讨论】:

所以你的意思是你的网站上不会有其他任何东西,只是当用户点击你网站的 url 时,文件应该被下载? 抱歉 - 已回答但没有意识到您已经尝试了下载属性。不过,最好在服务器端完成,在提供文件时使用“Content-disposition: attachment”标头 您可以在html上绑定一个函数下载并下载函数打开一个带有文件的窗口网址 Download a file using javascript的可能重复 【参考方案1】:

如果它是一个实际文件(不会像 JPG 文件那样简单地显示在您的浏览器中),那么您可以使用 javascript 或元重定向。

<script> document.location.href = 'yourfile.exe'; </script>

<meta http-equiv="refresh" content="0; url=yourfile.exe">

但我想知道您是否在谈论用户被询问是否要打开或保存文件(无论是 JPG 还是其他文件?)

【讨论】:

【参考方案2】:

另一种方法:

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

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

【讨论】:

很高兴看到这两种方法。上述方法不会在浏览器中打开 .jpg 或 .pdf !太棒了 这个解决方案太优雅了!【参考方案3】:

另一个纯 javascript 选项是:

const downloadFile = (file) => 
  const element = document.createElement('a');
  element.setAttribute('href', 'Download Btn');
  element.setAttribute('download', file);

  element.style.display = 'none';

  document.body.appendChild(element);

  element.click();
  document.body.removeChild(element);

然后你可以在加载时调用函数:

downloadFile(/*pass your file here*/);

【讨论】:

以上是关于你如何在javascript中自动下载文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Javascript中创建动态文件+链接以供下载? [复制]

如何使用js自动下载PDF?

如何使用 Javascript 下载、压缩和保存多个文件并取得进展?

请问找到了js代码后应该如何下载

如何禁止火狐自动打开下载文件

如何在点击a标签下载文件的时候通过JavaScript动态的修改文件的名称?