MVC.Net 在新窗口中打开文件而不是下载

问题描述 投票:0回答:3

我的要求是单击下载链接后在新窗口/选项卡中打开文件。尽管按照下面的帖子中的建议将内容配置设置为“内联”,但该文件始终会下载。

如何在新选项卡或窗口中打开 PDF 文件而不是下载它(使用 asp.net)?

我的 HTTP 响应是

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/octet-stream
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 5.2
content-disposition: inline;filename=FileName.pdf
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 141954

我的控制器操作如下 -

public async Task<FileContentResult> Index(string fileName)
    {
        byte[] document = await getFileContent("SomePathForTheFile");
        HttpContext.Response.AddHeader("content-disposition", "inline;filename=" + document.FileName);
        return File(document, "application/octet-stream");
    }

让文件在新选项卡/窗口中自动打开而不是仅仅下载的建议将非常有帮助!谢谢!

c# asp.net-mvc-4 download
3个回答
4
投票

找到答案了。

必须完成 2 件事才能在新窗口中打开文件 -

1.content-disposition必须设置为inline

2.内容类型应设置为与正在下载的文件对应的类型 -

application/pdf - 用于 pdf 文件

application/xml - 用于 xml 文件

application/vnd.ms-excel - 用于 xls 文件等。


0
投票

尝试以下代码。

@Html.ActionLink("Home","Index",null,new { @target="_blank" })

由于我们要返回到视图模式,因此无需提及标头响应

public async Task<FileContentResult> Index(string fileName)
    {
        byte[] document = await getFileContent("SomePathForTheFile");
        return File(document, "application/octet-stream");
    }

0
投票

您不能在浏览器中强制执行此行为,只能建议您希望如何处理它。 如果用户想默认下载文件,你无法阻止它发生。

© www.soinside.com 2019 - 2024. All rights reserved.