如何用Javascript打开本地磁盘文件?

我试图打开文件

window.open("file:///D:/Hello.txt"); 

浏览器不允许以这种方式打开本地文件,可能是出于安全原因。 我想在客户端使用文件的数据。 我怎样才能读取Javascript中的本地文件?

这是一个使用FileReader的例子:

 function readSingleFile(e) { var file = e.target.files[0]; if (!file) { return; } var reader = new FileReader(); reader.onload = function(e) { var contents = e.target.result; displayContents(contents); }; reader.readAsText(file); } function displayContents(contents) { var element = document.getElementById('file-content'); element.textContent = contents; } document.getElementById('file-input') .addEventListener('change', readSingleFile, false); 
 <input type="file" id="file-input" /> <h3>Contents of the file:</h3> <pre id="file-content"></pre> 

HTML5 fileReader工具允许你处理本地文件,但是这些文件必须由用户select,你不能在用户磁盘上寻找文件。

我目前使用这个开发版本的Chrome(6.x)。 我不知道其他浏览器支持它。

在JavaScript中没有标准的方法来操纵本地文件,就像你说的那样是出于安全原因。 尽pipe你可以在IE和XPCOM上使用ActiveX。 这是一个讨论XPCOM方式的链接。

你不能。 Firefox,Safari等新浏览器会阻止“文件”协议。 它只能在旧的浏览器上运行。

你将不得不上传你想要的文件。

Javascript通常不能访问新浏览器中的本地文件,但是XMLHttpRequest对象可以用来读取文件。 所以它实际上是读取文件的Ajax(而不是Javascript)。

如果你想读取文件abc.txt ,你可以编写代码:

 var txt = ''; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if(xmlhttp.status == 200 && xmlhttp.readyState == 4){ txt = xmlhttp.responseText; } }; xmlhttp.open("GET","abc.txt",true); xmlhttp.send(); 

现在txt包含文件abc.txt的内容。

xmlhttp请求方法对本地磁盘上的文件无效,因为浏览器安全性不允许我们这样做。但是我们可以通过创build快捷方式 – >右键单击 – >属性在目标“… browser location path.exe“append –allow-file-access-from-files.This在Chrome上进行了testing,但是应该注意所有浏览器窗口都应该closures,代码应该从通过这个快捷方式打开的浏览器运行。