是否可以通过JS或Javascript强制下载,即网页不应在浏览器中的新选项卡中打开文件,而应弹出窗口,让用户选择“另存为”或“打开”?
是否可以通过JS或Javascript强制下载,即网页不应在浏览器中的新选项卡中打开文件,而应弹出窗口,让用户选择“另存为”或“打开”?
<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的评论后编辑了下载属性。
var anchor = document.createElement('a');
anchor.href = this.props.download_url;
anchor.target = '_blank';
anchor.download = this.props.file_name;
anchor.click();
注意,我甚至没有将它添加到DOM中,所以它很快。
附注:在IE中,download
属性无法使用。但它只会在新标签页中打开链接。
http://caniuse.com/#feat=download
您无法通过JavaScript强制该行为,HTTP标头需要在服务器端设置:
Content-disposition=attachment; filename=some.file.name
您可以解决该问题的方法是让您的AJAX方法将用户重定向到PDF的URL:
location.replace('path/to.pdf');
(必须设置上述HTTP头信息才能生成PDF文档)
更新
在回答时,这是不可能的。现在可以了,向下滚动查看另一个说明的答案。
<a href="https://i.imgur.com/IskAzqA.jpg" download>
,可能会无法按预期工作。有关弃用和移除的公告请参见此处: https://developers.google.com/web/updates/2018/02/chrome-65-deprecations#block_cross-origin_wzxhzdk5a_download - LeeroyContent-Disposition: inline; filename=foo.pdf
content-disposition: attachment
)来完成的。一旦页面在客户端打开,HTTP响应就已经被处理了,这是定义好的。 - Paul D. Waite很抱歉,使用JQuery/JavaScript无法实现此功能。
您需要使用服务器端脚本来返回带有Content-Type
(HTTP头)的文件,以强制浏览器下载所请求的文件。 Content-Type
的一个可能值是application/force-download
。