【问题标题】:How to create a route that catch all pdf file?如何创建一条捕获所有 pdf 文件的路线?
【发布时间】:2010-04-08 20:52:17
【问题描述】:

我想让我的 pdf 文件以这种方式发送给我的用户:

public ActionResult GetPDF( string filename )
{
    return File( filename, "application/pdf", Server.HtmlEncode( filename ) );
}

但我不知道如何创建一个可以捕获我网站中所有不同 pdf 文件的路由?

非常感谢您的帮助!

【问题讨论】:

  • 您希望这些 PDF 的网址是什么样的?
  • www.website.com/anything/anything/filenam.pdf 但它可以嵌套在我的网站的许多级别,因为用户可以将 PDF 放在 CMS 的任何页面中。
  • 有人有想法吗?有可能吗?
  • 为什么不将所有 PDF 文件存储在一个地方,以便它们除了标识符(例如文件名)之外都具有相同的路径?我不明白你为什么要这样做。仅仅因为一个文件与一个页面相关联并不意味着它不能链接到其他地方。超链接不需要与它所在的页面相关。

标签: c# asp.net-mvc pdf routing


【解决方案1】:

试试这个..

string FilePath = MapPath("your.pdf");
Response.ContentType = "Application/pdf";
Response.AppendHeader( "content-disposition", "attachment; filename=" + FilePath);
Response.WriteFile(FilePath);
Response.End();

编辑:

Oups 刚刚看到它是 MVC...

在返回之前尝试附加标题...

【讨论】:

  • 它正在工作,我只是在我的 PDFDownloadHandler 中添加了 content-disposition 标头,就像这个公共覆盖字符串 GetRequestedFileMimeType(HttpContext context) { context.Response.AppendHeader("content-disposition", "attachment; filename= " + context.Request.PhysicalPath);返回“应用程序/pdf”; }
【解决方案2】:

我找到了一种方法来做我想做的事,只需阅读这个链接:http://forums.iis.net/t/1162518.aspx 或这个http://dotnetslackers.com/articles/aspnet/Range-Specific-Requests-in-ASP-NET.aspx

不是通过路由,而是在 IIS 中使用 Handler。

如果有人有更好的解决方案,请告诉我:)

编辑:

这真的不是很好,你可以看看这里:http://www.ville.st-augustin.qc.ca/carte-interactive 点击“carte de zonage”选项卡,然后点击任何 adobe 图标,它不能正常工作......感谢任何帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2012-06-12
    • 2018-01-28
    • 2016-10-19
    • 1970-01-01
    • 2020-11-14
    • 2012-07-25
    相关资源
    最近更新 更多