C# 在MVC中从控制器url打开文件
我需要当你点击一个网站上的链接打开一个pdf文件。当我把一个链接放到实际的文件上,你点击链接,它就会打开文件本身,这样你就可以查看它了。当您创建一个控制器来读取一个文件id并发送该文件时,它也可以工作。问题是客户希望直接打开文件(如链接到实际文件的方法),而不是自动下载(如控制器方法) 控制器示例(下载文件)href=”https://mywebsite.com/Download/DownloadFile?downloadId=17" 链接示例(直接打开文件)href=”https://mywebsite.com/pdf/mypdf.pdf" 我在多个浏览器和多台计算机上进行了尝试。结果总是一样的。我将文件内容类型设置为application/pdfC# 在MVC中从控制器url打开文件,c#,asp.net,asp.net-mvc,pdf,C#,Asp.net,Asp.net Mvc,Pdf,我需要当你点击一个网站上的链接打开一个pdf文件。当我把一个链接放到实际的文件上,你点击链接,它就会打开文件本身,这样你就可以查看它了。当您创建一个控制器来读取一个文件id并发送该文件时,它也可以工作。问题是客户希望直接打开文件(如链接到实际文件的方法),而不是自动下载(如控制器方法) 控制器示例(下载文件)href=”https://mywebsite.com/Download/DownloadFile?downloadId=17" 链接示例(直接打开文件)href=”https://mywe
任何帮助都将不胜感激。如果您的控制器方法生成文档作为响应,您可以使用向浏览器指定如何打开它。我认为您希望包含以下标题:
Content-Disposition: inline; filenname=mypdf.pdf
Content-Type: application/pdf
这在大多数浏览器中都适用 您可以为静态文件设置路由 步骤:
routes.RouteExistingFiles = true;
routes.MapRoute(
name: "staticFileRoute",
url: "pdf/{*file}",
defaults: new { controller = "Download", action = "DownloadFile" }
);
<system.webServer>
<handlers>
<add name="MyCustomUrlHandler2" path="pdf/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
public FileResult DownloadFile(string file)
{
string path = Server.MapPath(String.Format("~/pdf/{0}", file));
if (System.IO.File.Exists(path))
{
string mime = MimeMapping.GetMimeMapping(path);
return File(path, mime);
}
else
throw new ArgumentException("File not found");
}