2012-09-10 70 views
0

目前我正在使用文档管理系统项目技术是ASP.Net MVC 3。我想显示位于我硬盘驱动器(C:,D:E:ect)文件夹中的pdf文档。我试图<embed>标签。但它不起作用。它适用于我的项目中的文件。我也不需要下载该pdf并阅读。我需要在我看来的地方展示它。如何在浏览器的外部文件夹中显示PDF文档

我看到了这段代码。但我不知道如何使用..

public FileResult GetFile(string fileName) 
{ 
    Response.AppendHeader("Content-Disposition", "inline; filename=" + fileName + ";"); 
    string path = AppDomain.CurrentDomain.BaseDirectory + "App_Data/";    
    return File(path + fileName, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName); 
} 

有人可以帮我解决这个问题。 谢谢

回答

0

您可能是Controller类的File方法。这将把PDF返回给浏览器。

public ActionResult GetFile(string fileName) 
{ 
    string fullPathToFile=SomeMethodToGetFullPathFromFileName(fileName); 
    return File(fullPathToFile,"application/pdf","someFriendlyName.pdf") 
} 

假设SomeMethodToGetFullPathFromFileName是返回到PDF文件

的完整路径,您可以使用Server.MapPath方法来获得完整的(物理)文件路径的方法。

如果你想在浏览器中查看此,您可以访问它喜欢

yoursitename/someControllername/getfile?fileName=somepdffilenamehere 
+0

文件已下载。我需要在我的“视图”中显示该pdf。 – Krishan

+0

下载到哪里?怎么样 ? – Shyju

0

你已经显示的代码表示,供应从App_Code文件夹中的文件的控制器操作。从硬盘上的任意位置提供文件将是一个巨大的安全漏洞。所以我建议你坚持这种做法。但是这个代码仍然存在缺陷。恶意用户仍然可以使用特制的url在硬盘上显示任意文件。这可以被固定了以下行动:

public ActionResult GetFile(string file) 
{ 
    var appData = Server.MapPath("~/App_Data"); 
    var path = Path.Combine(appData, file); 
    path = Path.GetFullPath(path); 
    if (!path.StartsWith(appData)) 
    { 
     // Ensure that we are serving file only inside the App_Data folder 
     // and block requests outside like "../web.config" 
     throw new HttpException(403, "Forbidden"); 
    } 

    if (!System.IO.File.Exists(path)) 
    { 
     return HttpNotFound(); 
    } 

    return File(path, MediaTypeNames.Application.Pdf); 
} 

,现在你可以使用embed标签链接到这个控制器动作:

<object data="@Url.Action("GetFile", "SomeController", new { file = "test.pdf" })" type="application/pdf" width="300" height="200"> 
    alt : @Html.ActionLink("test.pdf", "SomeController", "Home", new { file = "test.pdf" }) 
</object> 

iframe如果你喜欢:

<iframe src="@Url.Action("GetFile", "SomeController", new { file = "foo.pdf" })" style="width:718px; height:700px;" frameborder="0"></iframe> 
相关问题