如何在iframe中显示本地文件夹中的html文件?

时间:2012-11-20 09:14:20

标签: c# javascript jquery asp.net iframe

我尝试在iframe中显示html文件。

html文件位于我服务器上的本地文件夹中,具有相关权限(例如:c:\temp)。

我试过了:

iframe = document.createElement("iframe");
iframe.src = "file:///c:\temp\a.html";
iframe.style.display = "block";
document.body.appendChild(iframe);

但内容不会显示在iframe内。

我尝试的另一个解决方案是使用ajaxdiv中显示html:

$("#DIV").html( *READ HTML TEXT FROM FILE *)

但问题是我在html页面中包含了图片和css文件,因为当前位置是我的网站(它们包含在h c:\temp文件夹中,所以无法显示它们)。

有没有人知道如何在iframe内显示包含图片的html页面?

2 个答案:

答案 0 :(得分:2)

问题是浏览器将file:///c:\temp\a.html视为浏览器的本地文件,因此它指向访问者的C:驱动器。

您可以将该本地文件夹设置为您网站的虚拟目录(在IIS中),并使用正确的Web路径(http:// ...)引用该文件。这样你就不会移动文件夹,但它仍然可以通过网络服务器获得。

答案 1 :(得分:0)

假设从root用户而不是temp加载html文件时它可以正常工作(因此,除了文件位置的问题外,排除所有内容),只要您有权访问,就可以加载相对于您网站的文件。它确实需要了解您的路径 - 本地和服务器(如果适用)。例如,我在托管服务器上有一个名为“temp”的文件夹,该文件夹是我网站的 peer

使用Request.PhysicalApplicationPath,我发现我的网站位于我的主机上:“c:\ inetpub \ wwwroot \ mydomain.com \ index.htm”。因此我的临时文件夹和文件必须位于“c: \ inetpub \ wwwroot \ temp \ myfile.txt“(再次,temp是我网站的同行)。

原油示例:

string _filePath, _uriServerName = "";

_filePath = Request.PhysicalApplicationPath;
_uriServerName = Request.ServerVariables["SERVER_NAME"].ToLower();

if (_uriServerName != "localhost")
{
int rootPos = _filePath.IndexOf("wwwroot"); //get position wwwroot 
_filePath = _filePath.Substring(0, rootPos) + "temp\\myfile.txt";
}

我使用上面的方法来加载网站外的文件。为此,它运作良好。但是,iframe可能会带来一些其他挑战。我不相信这会出现任何跨域问题,但我不完全确定。