我正在使用一小段C#代码在其中创建一个带有pdf的iFrame
。
但是,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:\Users\Houseman\Desktop\WebApplication1\WebApplication1\Data\Untitled1.pdf" width="400" height="400"></iframe>
哪个看起来正确。我确实在该位置有.pdf文件。没有404错误,它只是空白......
我做错了什么,或者我怎么能解决这个问题?
我可以通过浏览器访问该文件,但我必须取出localhost:8683
并将其替换为file:///
我正在使用
访问该文件string PdfLocation = System.IO.Path.Combine(Server.MapPath("Data") ,pdfn);
其中pdfn
是上传的文件名+“。pdf”
答案 0 :(得分:2)
尝试创建实际的IFRAME控件,而不是创建文字(和btw,你不能用这些方式创建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);
确保您的浏览器可以使用该路径,而不仅仅是服务器。
答案 1 :(得分:2)
请改为尝试:
string PDFLocation = "~/Data/" + pdfn;
您将获得绝对服务器文件路径,该路径无法从浏览器访问。你需要网站相对路径。
您需要将此答案与Yuriy关于将iframe创建为服务器控件的答案相结合。