![](/img/trans.png)
[英]How to load a local html file inside an iframe in my react application?
[英]Load local html on iframe
我的服务器.html
页面位于c:\\test\\test.html
。
我想显示test.html
内的客户机上的iframe,我该怎么办呢?
我尝试了什么:
<iframe id="serviceFrameSend" src="file:///c:\test\test.html" width="1000" height="1000" frameborder="0">
但它在客户端机器上找到了test.html
文件,那么如何才能使test.html
从服务器加载?
如果不可能,我怎么能以另一种方式做到这一点?
当您在服务器上有页面时,您需要使用http://
url,而不是file:///
。 这有点棘手,因为Web服务器的文件路径语法与文件系统不同。 这里有一些选择。
<iframe id="serviceFrameSend" src="test.html" width="1000" height="1000" frameborder="0">
<iframe id="serviceFrameSend" src="./test.html" width="1000" height="1000" frameborder="0">
如果test.html
与主页位于同一目录中 ,则可以使用这些。 (主页是带有iframe的html。)
<iframe id="serviceFrameSend" src="../test.html" width="1000" height="1000" frameborder="0">
如果test.html
位于主页的父目录中,只要它不超出Web服务器的“root”目录,就可以使用它。
<iframe id="serviceFrameSend" src="../test/test.html" width="1000" height="1000" frameborder="0">
如果test.html
位于主页的兄弟目录中 ,则可以使用此方法,例如当您的主页为path/views/main/page.html
时, path/views/test/test.html
。
<iframe id="serviceFrameSend" src="https://www.server.com/test/test.html" width="1000" height="1000" frameborder="0">
或者,您可以始终使用绝对路径 ,基于test.html
的完整URL。
您必须将“test.html”文件放在服务器上的公共目录中。 或者使“test”目录可公开访问。
您将不得不使用服务器端语言,如PHP,ASP.NET,node.js等,并创建一个“代理”,它将获得所需的文件作为参数,读取服务器上的文件,并发送其内容。
例如,在ASP.NET中,您可以拥有以下代码:
Download.aspx
<script language="C#" runat="server">
void Page_Load(object sender, EventArgs e)
{
int id;
if (!Int32.TryParse(Request.QueryString["id"], out id))
{
Label1.Text = "Missing or invalid ID";
return;
}
string filePath = "";
switch (id) {
case 1:
filePath = "c:\\test\\test.html";
break;
}
if (filePath.Length == 0)
{
Label1.Text = "ID " + id + " does not exist";
return;
}
if (!System.IO.File.Exists(filePath))
{
Label1.Text = "Requested file '" + filePath + "' does not exist";
return;
}
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
Response.Clear();
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
}
</script>
<!DOCTYPE html>
<html>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server"></asp:Label>
</form>
</body>
</html>
然后有这样的iframe:
<iframe id="serviceFrameSend" src="Download.aspx?id=1" width="1000" height="1000" frameborder="0"></iframe>
您无法从PC加载,例如c:...您只能从服务器加载文件。 如果这个html文件和test.html文件在服务器上的同一目录下,可以轻松加载test.html,如果它在另一个目录中,那么使用目录名,如test / test.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.