2012-11-20 55 views
0

我尝试在iframe中显示html文件。如何从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 *) 

但这里的问题是,我有图片和CSS文件中包含的HTML页面内,他们不能因为当前位置是我的网站(它们包含在带有html的c:\temp文件夹中),因此可以显示它们。

有没有人有一个想法如何显示HTML页面的iframe

+1

我会将它们移出临时文件夹并放入Web根目录中的文件夹中。如果服务器允许您以您尝试的方式访问和显示服务器上的任何文件,则会有严重的安全问题。 –

+0

嗨@AdrianThompsonPhillips,谢谢!我只能访问具有特殊权限的特定文件夹。我不能在没有移动文件的情况下做到这一点吗? – Inbal

+0

为了分析起见,当你从web根加载html文件而不是temp时,它能正常工作吗? – puddleglum

回答

2

问题是,浏览器看到file:///c:\temp\a.html作为浏览器本地文件,所以它指向访问者的C:驱动器。

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

0

假设在从根目录加载html文件而不是temp(因此排除除文件位置的问题以外的所有内容)时它可以正常工作,只要有权访问,就可以加载相对于您网站的文件。它确实需要了解你的路径(如果适用的话) - 本地和服务器。例如,我在托管服务器上有一个名为“temp”的文件夹,它是我网站上的对等端。我发现我的网站位于我的主机上:“c:\ inetpub \ wwwroot \ mydomain.com \ index.htm”。因此我的临时文件夹&文件必须在“c:\ inetpub \ wwwroot \ mydomain.com \ index.htm” \ 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可能会带来一些其他挑战。我不认为这应该提出任何跨域问题,但我并不完全确定。

相关问题