是否可以通过 JS 或 Javascript 强制下载,即网页不应该在浏览器的新选项卡中打开文件,而是弹出让用户选择“另存为”或用 ???
通过js或query强制下载
IT技术
javascript
jquery
2021-02-10 17:49:52
5个回答
随着 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 发表评论后编辑了下载属性
动态创建链接并单击它的下载属性以强制下载为文件:
var anchor = document.createElement('a');
anchor.href = this.props.download_url;
anchor.target = '_blank';
anchor.download = this.props.file_name;
anchor.click();
请注意,我什至没有将它添加到 DOM,所以它很快。
PSdownload
属性不适用于 IE。但它只会在新标签中打开链接。
http://caniuse.com/#feat=download
您不能从 JavaScript 强制这种行为,需要在服务器端设置 HTTP 标头:
Content-disposition=attachment; filename=some.file.name
解决问题的方法是让您的 AJAX 方法将用户重定向到 PDF 的 URL:
location.replace('path/to.pdf');
(必须为 PDF 设置上述 HTTP 标头)
更新
在这个答案的时候,这是不可能的。现在是这样,向下滚动以查看其他答案。
不,这仅在 JQuery/JavaScript 中是不可能的。
您将需要一个服务器端脚本,该脚本会返回带有Content-Type
(HTTP 标头)的文件,这将强制浏览器下载您请求的文件。的可能值Content-Type
是application/force-download
。
不,这是不可能的,感谢上帝,它不是。否则,当您在不知情的情况下访问网站时,我会让您想象一下,什么样的文件可以存储在您的计算机上。
正如@Paul D. White 在评论部分指出的那样,如果您想使用与其关联的默认程序内联(在浏览器内)打开文件,您可以让服务器发送 Content-Disposition HTTP 标头。例如:
Content-Disposition: inline; filename=foo.pdf
其它你可能感兴趣的问题