在iframe上加载本地html

问题描述 投票:6回答:4

我在.html上的服务器c:\test\test.html页面中。

我想在客户端计算机上的iframe中显示test.html,该怎么办?

我尝试过的事情:

<iframe id="serviceFrameSend" src="file:///c:\test\test.html" width="1000" height="1000"  frameborder="0">

但是在客户端计算机上找到了test.html文件,因此如何使test.html从服务器加载?

如果不可能,我该怎么办?

javascript html iframe
4个回答
7
投票

由于您在服务器上有页面,因此需要使用http://网址,而不是file:///。这有点棘手,因为Web服务器的文件路径比文件系统的文件具有different syntax。这是一些选项。


<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服务器的“根”目录即可。


<iframe id="serviceFrameSend" src="../test/test.html" width="1000" height="1000"  frameborder="0">

如果test.html位于主页的兄弟目录中,则可以使用此选项,例如,当主页为path/views/test/test.html时为path/views/main/page.html


<iframe id="serviceFrameSend" src="https://www.server.com/test/test.html" width="1000" height="1000"  frameborder="0">

或者,您始终可以根据absolute path的完整网址使用test.html


1
投票

您将必须在服务器上的公共目录中放置“ test.html”文件。否则,使“测试”目录可公开访问。


1
投票

您将必须使用服务器端语言,例如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>

0
投票

您无法像c:一样从PC加载...。您只能从服务器加载文件。如果此html文件和test.html文件位于服务器上的同一目录中,请轻松加载test.html;如果它位于另一个目录中,则使用目录名称,例如test / test.html

© www.soinside.com 2019 - 2024. All rights reserved.