我尝试在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内。
我尝试的另一个解决方案是使用ajax
在div
中显示html:
$("#DIV").html( *READ HTML TEXT FROM FILE *)
但问题是我在html页面中包含了图片和css文件,因为当前位置是我的网站(它们包含在h c:\temp
文件夹中,所以无法显示它们)。
有没有人知道如何在iframe
内显示包含图片的html页面?
答案 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可能会带来一些其他挑战。我不相信这会出现任何跨域问题,但我不完全确定。