通过js或查询强制下载

时间:2011-03-04 11:07:11

标签: javascript jquery

是否可以通过JS或Javascript强制下载,即网页不应该在浏览器的新选项卡中打开文件,而是弹出让用户选择“另存为”或打开???

5 个答案:

答案 0 :(得分:47)

随着HTML5的出现,你可以在锚标签中使用新的属性下载。

代码看起来像

<a download="name_of_downloaded_file" href="path/to/the/download/file"> Clicking on this link will force download the file</a>

适用于firefox和chrome最新版本。我应该提一下我没有在IE中查看它吗? :P

在sstur评论后编辑了下载属性


https://caniuse.com/#feat=download

答案 1 :(得分:17)

动态创建链接,然后单击下载属性以强制下载为文件:

var anchor = document.createElement('a');
anchor.href = this.props.download_url;
anchor.target = '_blank';
anchor.download = this.props.file_name;
anchor.click();

请注意我甚至没有将它添加到DOM中,所以它很快。

P.S download属性不适用于IE。但它只会在新标签中打开链接。 http://caniuse.com/#feat=download

答案 2 :(得分:14)

您无法通过JavaScript强制执行该行为,需要在服务器端设置HTTP标头:

Content-disposition=attachment; filename=some.file.name

解决问题的方法是让您的AJAX方法将用户重定向到PDF的URL:

location.replace('path/to.pdf');

(必须为PDF设置上述HTTP标头)


<强>更新

在回答这个问题时,这是不可能的。现在是,向下滚动查看the other answer saying so

答案 3 :(得分:4)

不,这是不可能的,感谢上帝不是。否则,当您在不知情的情况下访问网站时,我会让您想象您的计算机上可以存储哪些文件。

正如@Paul D. White在评论部分所指出的,如果你想用内置的(在浏览器内部)打开文件,你可以让服务器发送Content-Disposition HTTP头。例如:

Content-Disposition: inline; filename=foo.pdf

答案 4 :(得分:3)

仅限JQuery / JavaScript,这是不可能的。

您需要一个服务器端脚本,该脚本会返回带有Content-Type(HTTP标头)的文件,该脚本将强制浏览器下载您请求的文件。 Content-Type的可能值为application/force-download