2012-07-27 32 views
1

我想在iframe上显示pdf,但我的pdf不在项目文件夹(C:\ intetpub \ wwwroot)上。它被保存在驱动器D:\上。iframe不显示PDF与路径从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参数可能不适用于这个解决方案。

回答

1

你必须写一个控制器动作,将检索文件和流回响应:

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

,现在在你的看法,你可以使用iframe把它指向这个控制器动作:

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

谢谢你的工作.. – RSB 2012-07-27 07:05:28

1

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

  1. 设置在IIS虚拟目录(名为PDF也许?),并指向d:\
  2. 现在,你的源链接可能是这样的src="\PDF\Test.pdf"

另一种方法是将有一个进入该目录的控制器/动作,将该文件读入一个字节数组,并将该文件的内容返回给最终用户。 Here is an SO answer如何将文件从一个控制器动作返回给用户或直接返回文件由达林

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

PDF作用的结果是工作,我会尝试虚拟直销对其他选择tiory。谢谢。 – RSB 2012-07-27 07:07:27