如何在单击 HTML 按钮或 JavaScript 时触发文件下载

2022-08-29 22:42:33

这很疯狂,但我不知道该怎么做,而且由于这些词很常见,很难在搜索引擎上找到我需要的东西。我认为这应该很容易回答。

我想要一个简单的文件下载,这将做同样的事情:

<a href="file.doc">Download!</a>

但是我想使用HTML按钮,例如以下任一:

<input type="button" value="Download!">
<button>Download!</button>

同样,是否可以通过JavaScript触发简单的下载?

$("#fileRequest").click(function(){ /* code to download? */ });

我绝对不是在寻找一种方法来创建一个看起来像按钮的锚点,使用任何后端脚本,或者弄乱服务器标头或哑剧类型。


答案 1

您可以使用 HTML5 属性触发下载。download

<a href="path_to_file" download="proposed_file_name">Download</a>

哪里:

  • path_to_file是解析为同一源上的 URL 的路径。这意味着页面和文件必须共享相同的域、子域、协议(HTTP 与 HTTPS)和端口(如果已指定)。例外情况是 blob:data: (它们总是有效) 和 file: (它永远不起作用)。
  • proposed_file_name是要保存到的文件名。如果为空,则浏览器默认为文件的名称。

文档: MDNHTML 标准下载HTML 标准下载CanIUse


答案 2

对于按钮,你可以做

<form method="get" action="file.doc">
   <button type="submit">Download!</button>
</form>