通过js或查询强制下载

是否有可能强制通过JS或Javascript的下载,即网页不应该在浏览器的新标签中打开文件,而是popup让用户select“另存为”或打开???

您不能强制JavaScript的行为,需要在服务器端设置HTTP头:

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

您可以解决问题的方法是让您的AJAX方法将用户redirect到PDF的URL:

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

(上面的HTTP标题必须设置为PDF)

随着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发表评论后,编辑下载属性

dynamic创build链接并点击下载属性强制下载文件:

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

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

PS download属性将无法使用IE浏览器。 但它只会打开新标签中的链接。 http://caniuse.com/#feat=download

不,这是不可能的,也不要感谢上帝。 否则,我会留下你的想象力,什么样的文件可以存储在您的计算机上,当你访问一个网站,而你不知道。

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

 Content-Disposition: inline; filename=foo.pdf 

不,这是不可能的,只有JQuery / JavaScript。

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