我正在使用一小段c#代码来创建一个iFrame
,其中包含pdf。
但是,iFrame显示为空。
LiteralControl c= new LiteralControl("<iframe id='embeddedFrame' name='embeddedFrame' runat=server src="+filePath+" width=400 height=400></iframe>");
ph.Controls.Add(c);
查看页面源代码给了我这个:
<iframe id="embeddedFrame" name="embeddedFrame" runat="server" src="C:UsersHousemanDesktopWebApplication1WebApplication1DataUntitled1.pdf" width="400" height="400"></iframe>
看起来是正确的。我确实在那个位置有。pdf文件。没有404错误,只是空白…
我做错了什么,或者我该如何解决这个问题?
我可以通过浏览器访问文件,除了我必须拿出localhost:8683
并用file:///
代替它
我正在用
访问文件string PdfLocation = System.IO.Path.Combine(Server.MapPath("Data") ,pdfn);
其中pdfn
为上传文件的文件名+".pdf"
试试这个:
string PDFLocation = "~/Data/" + pdfn;
您将获得服务器文件的绝对路径,这是无法从浏览器访问的。你需要的是网站的相对路径。
您需要将这个答案与Yuriy关于创建iframe作为服务器控件的答案结合起来。
尝试创建实际的IFRAME控件,而不是创建文字(顺便说一句,您不能以这种方式创建runat="sever
控件):
HtmlGenericControl c = new HtmlGenericControl();
c.TagName = "IFRAME";
c.Attributes["src"] = filePath;
c.Attributes["id"] = "embeddedFrame";
c.Attributes["name"] = "embeddedFrame";
c.Attributes["width"] = "400";
c.Attributes["height"] = "400";
ph.Controls.Add(c);
并确保该路径在浏览器中可用,而不仅仅是从服务器。