簡體   English   中英

Javascript訪問本地計算機上的文件

[英]Javascript Access to File on local machine

我想使用window.open()打開位於本地驅動器上的文件。

當我嘗試使用window.open訪問文件時,出現錯誤“ 訪問被拒絕。

有人會幫助實現Internet Explorer 8.0中的這一要求嗎?

謝謝!

你不能 並為此感謝上帝。 想象一下,如果JS能夠訪問客戶端的文件系統,那么互聯網將有多不安全。
當然,IE8具有MS特定的JScript超集( ActiveXObject ),它確實啟用了文件系統訪問:

var fileHandle,
    fs = new ActiveXObject("Scripting.FileSystemObject");
fileHandle = fs.OpenTextFile("C:\\path\\to\\file.tmp", 1, true);
fileHandle.Write('This is written to a file');
console.log(fileHandle.ReadLine());//will log what we've just written to the file

但這是非標准的,而且-我認為-也不再受支持,並且無法使用X瀏覽器。
這是文檔 在底部,有一個鏈接,可以更詳細地概述此對象必須提供的屬性和方法, 如您所見,有很多選擇

我添加這個答案只是為了完整,但是就網頁而言,Elias Van Ootegem的答案是正確的:您無法(也不應該)進入本地硬盤。

但是..您可以確定您的頁面是HTA(HTML應用程序):

HTML應用程序Wiki

本質上,這是一個以.hta為擴展名的網頁(通常),並帶有一些額外的標記來告訴IE它是HTA應用程序,而不是網頁。

據我所知,這是通過Windows操作系統運行的,僅適用於IE。 HTA應用程序將在IE中作為網頁打開,但沒有通常的Web導航/收藏夾工具欄等。

請注意,如果您在Internet服務器上以HTA應用程序的形式發送頁面,則很可能會導致病毒掃描程序和防火牆彈出,因為這本質上是在運行腳本,而這可能會對您的計算機產生很多影響。 根本不適合一般的內部協作人員,但是在內部網這樣的安全環境中可能很有用,在該環境中,應用程序的源是安全的。

要進入文件系統,您可以使用如下所示的javascript代碼:

// set up a Fils System Object variable.. 
var FSO = new ActiveXObject("Scripting.FileSystemObject");


// function to read a file
function ReadFile(sFile) {

var  f, ts;
var s="";
if(FSO.FileExists(sFile))
{
    f = FSO.GetFile(sFile); 
    ts = f.OpenAsTextStream(ForReading, TristateUseDefault); 
    if (!ts.AtEndOfStream) {s = ts.ReadAll( )}; 
    ts.Close( ); 
}
return s; 
}


alert(ReadFile("c:\\somefilename.txt");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM