我的一个控制器操作会向用户返回一个文件。无论文件类型如何,我都希望向用户显示下载(打开/保存)对话框。当文件类型为.doc,.docx,.xlsx等时,这种方法很好。但是当文件是.txt,.xps,.pdf(有时)或.html时,它会在浏览器中打开。
有没有办法阻止文件在浏览器中打开,只允许用户在单独的窗口中打开它而不导航离开当前页面?
该文件的请求是使用jQuery的$.ajax({})
。
相关:让浏览器处理请求并给出弹出窗口而不是AJAX调用接收文件的conent作为响应字符串由this ansewr解释,但是这个问题解决了强制浏览器处理收到后以某种方式提交。
答案 0 :(得分:5)
我认为您不能使用客户端命令或设置来执行此操作。您需要在服务器上执行某些操作,以便为每个文件返回application/octet-stream
的内容类型。否则,浏览器将查看传入文件,并根据自己的规则和功能决定如何处理它。
如果您可以在服务器上执行此操作,请尝试将"Content-Disposition"
标题设置为"attachment; filename=whatever.xyz"