Asp.net MVC的FileContentResult - 防止在浏览器中打开

5

我的一个控制器操作会将文件返回给用户。无论文件类型如何,我都希望用户能够看到下载(打开/保存)对话框。当文件类型为.doc、.docx、.xlsx等时,这是可以正常工作的,但当文件类型为.txt、.xps、.pdf(有时候)或.html时,它会在浏览器中打开。

有没有办法防止文件在浏览器中打开,并且只允许用户在不离开当前页面的情况下在单独窗口中打开它?

使用jQuery的$.ajax({})发出了请求文件的请求。

相关内容:与 AJAX 调用接收文件内容字符串作为响应不同,让浏览器处理请求并弹出窗口的方法已经在这个答案中解释过,但本问题解决的是一旦接收到文件,强制浏览器以某种方式处理文件的问题。

1个回答

5

我认为你无法通过客户端命令或设置来实现这一点。你需要在服务器上进行一些操作,以便每个文件返回application/octet-stream类型的内容。否则,浏览器将根据自己的规则和能力查看传入的文件,并决定如何处理它。

如果你可以在服务器上做到这一点,请尝试将"Content-Disposition"头设置为"attachment; filename=whatever.xyz"


这将会得到与application/unknown相同的结果,不幸的是,这正是我所想避免的。为了用户方便,最好允许他们一键打开文件(只是不在当前浏览器窗口中)。 - yoozer8
如果您可以在服务器上执行此操作,请尝试将“Content-Disposition”标头设置为“attachment; filename=whatever.xyz”。 - Ray
4
请注意:如果您在FileContentResult上传递了非空值的FileDownloadName属性,则MVC框架将自动设置响应中的Content-Disposition标头。 - Levi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接