iframe不显示带有D:\ drive路径的pdf?

时间:2012-07-27 06:41:35

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

我想在iframe上显示pdf,但我的pdf不在项目文件夹(C:\ intetpub \ wwwroot)上。它保存在驱动器D:\。

示例代码:
<iframe src="D:\Test.pdf#page=30"></iframe>

我尝试了ff:

src="file:///D:/Test.pdf#page=30"
src="<%: Url.Content(Model.path) %>"

但仍然没有运气。我不想复制/移动项目文件夹或根文件夹上的pdf。有没有其他方法可以做到这一点,或者我的src路径是错误的?

我打算创建一个showPDF.aspx,将它放在iframe上,但我担心adobe url参数可能无法使用此解决方案。

2 个答案:

答案 0 :(得分:1)

使用您粘贴的代码,浏览器将尝试从CLIENT计算机D驱动器显示该文件。您需要在应用程序中创建一个指向PDF文件夹的虚拟目录。然后,您可以像在Web应用程序根目录中的实际目录一样引用该虚拟目录。

  1. 在IIS中设置虚拟目录(可能称为PDF?)并指向D:\
  2. 现在,您的源链接可能类似​​于src="\PDF\Test.pdf"
  3. 另一种方法是让控制器/操作进入该目录,将文件读入字节数组并将文件内容的FileResult返回给最终用户。 Here is an SO answer如何从控制器操作向用户返回文件或直接按照Darin的建议返回文件

    public ActionResult Pdf()
    {
        return File(@"d:\test.pdf", "application/pdf");
    }
    

答案 1 :(得分:1)

您必须编写一个控制器操作,该操作将检索文件并将其传回响应:

public ActionResult Pdf()
{
    return File(@"d:\test.pdf", "application/pdf");
}

现在在您的视图中,您可以使用iframe将其指向此控制器操作:

<iframe src="<%= Url.Action("Pdf", "SomeController") %>"></iframe>