如何用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,代码应该从通过这个快捷方式打开的浏览器运行。