2012-11-20 83 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可能會帶來一些其他挑戰。我不認爲這應該提出任何跨域問題,但我並不完全確定。

相關問題