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

JavaScript HTML

伽罗理查德

2020-03-23

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

我想要一个简单的文件下载,该操作与此相同:

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

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

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

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

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

我绝对不是在寻找一种创建类似于按钮的锚,使用任何后端脚本或与服务器标头或mime类型混淆的方法。

第2574篇《单击HTML按钮或JavaScript时如何触发文件下载》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

11个回答
泡芙 2020.03.23

对我来说,添加按钮而不是锚文本非常有效。

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

按照大多数规则,这可能不可行,但看起来还不错。

小宇宙古一 2020.03.23

如果您使用<a>标记,请不要忘记使用指向文件的整个网址,即:

<a href="http://www.example.com/folder1/file.doc">Download</a>
小卤蛋 2020.03.23

您可以添加标签,但不添加任何文本,但带有链接。当您像在代码中一样单击按钮时,只需运行$(“ yourlinkclass”)。click()函数。

LEYStafan 2020.03.23

如果您有一个复杂的URL,另一种方法file.doc?foo=bar&jon=doe是在表单内添加隐藏字段

<form method="get" action="file.doc">
  <input type="hidden" name="foo" value="bar" />
  <input type="hidden" name="john" value="doe" />
  <button type="submit">Download Now</button>
</form>

灵感来自@Cfreak答案,该答案不完整

番长猴子 2020.03.23

下载属性

 <a class="btn btn-success btn-sm" href="/file_path/file.type" download>
     <span>download </span>&nbsp;<i class="fa fa-download"></i>
 </a>
西门 2020.03.23

在您的<body></body>标签之间的任意位置,使用以下代码放置一个按钮:

<button>
    <a href="file.doc" download>Click to Download!</a>
</button>

这肯定可以工作!

斯丁飞云阳光 2020.03.23

如果您不能使用表单,则使用downloadjs的另一种方法非常合适。downloadjs在后台使用blob和html 5文件API:

{downloadjs(URL,文件名)})/>

*这是jsx / react语法,但可以在纯HTML中使用

飞云 2020.03.23

这最终对我有用,因为要下载的文件是在加载页面时确定的。

JS更新表单的action属性:

function setFormAction() {
    document.getElementById("myDownloadButtonForm").action = //some code to get the filename;
}

调用JS更新表单的action属性:

<body onLoad="setFormAction();">

带有提交按钮的表单标签:

<form method="get" id="myDownloadButtonForm" action="">
    Click to open document:  
    <button type="submit">Open Document</button>
</form>

以下无效

<form method="get" id="myDownloadButtonForm" action="javascript:someFunctionToReturnFileName();">
DavaidJinJin 2020.03.23

引导版本

<a class="btn btn-danger" role="button" href="path_to_file"
   download="proposed_file_name">
  Download
</a>

记录在Bootstrap 4文档中,也可以在Bootstrap 3中使用。

Tony凯 2020.03.23

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

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

哪里:

  • path_to_file是路径解析为URL 同根同源这意味着页面和文件必须共享相同的域,子域,协议(HTTP与HTTPS)和端口(如果指定)。例外是blob:and data:(始终有效)和and file:(永远无效)。
  • proposed_file_name是要保存到的文件名。如果为空,则浏览器默认为文件名。

文档:MDNHTML标准上下载HTML标准上downloadCanIUse

Stafan路易 2020.03.23

对于按钮,您可以执行

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android