从MVC中的控制器URL打开文件

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

当您单击网站上的链接以打开pdf文件时,我需要。当我放置指向实际文件的链接并单击该链接时,它将打开文件本身,以便您查看。当您创建一个读取文件ID并发送文件的控制器时,它也可以正常工作。问题是客户希望直接打开文件(例如链接到实际文件方法),而不仅仅是自动下载(例如控制器方法)

控制器示例(下载文件)href =“ https://mywebsite.com/Download/DownloadFile?downloadId=17”链接示例(直接打开文件)href =“ https://mywebsite.com/pdf/mypdf.pdf”

我已经在多种浏览器和多台计算机上尝试过。结果总是一样的。我将文件内容类型设置为application / pdf。

任何帮助将不胜感激。

c# file pdf model-view-controller anchor
2个回答
0
投票

如果控制器方法生成文档作为响应,则可以使用Content-Disposition header向浏览器指定如何打开它。我认为您想要的是包含这些标头:

Content-Disposition

这在大多数浏览器中都会出现。


0
投票

您可以设置静态文件的路由。

步骤:

  1. 在RouteConfig.cs中启用静态文件的路由

    Content-Disposition: inline; filenname=mypdf.pdf
    Content-Type: application/pdf
    
  2. 为您的RouteConfig.cs的路径添加路由

    routes.RouteExistingFiles = true;
    
  3. 在Web.config中添加以下条目

    routes.MapRoute(
      name: "staticFileRoute",
      url: "pdf/{*file}",
      defaults: new { controller = "Download", action = "DownloadFile" }
    );
    
  4. 将操作“ DownloadFile”添加到“下载”控制器,如下所示:

    <system.webServer>
      <handlers>
        <add name="MyCustomUrlHandler2" path="pdf/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      </handlers>
    </system.webServer>
    
© www.soinside.com 2019 - 2024. All rights reserved.