0

我尝试在 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在 a 中显示 html div

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

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

有谁知道如何在 html 页面中显示带有图像的 html 页面iframe

4

2 回答 2

2

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

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

于 2012-11-20T15:57:32.220 回答
0

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

使用 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 可能会带来一些其他挑战。我不认为这会带来任何跨域问题,但我不太确定。

于 2012-11-20T15:46:59.910 回答