使用javascript读取本地文本文件

使用javascript读取本地文本文件,javascript,Javascript,我想从本地html文件中读取本地文本文件,因此我尝试在本线程中遵循解决方案,但建议的解决方案也不适用于我: function readTextFile(file) { var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function () { if(rawFile.readyState === 4)

我想从本地html文件中读取本地文本文件,因此我尝试在本线程中遵循解决方案,但建议的解决方案也不适用于我:

function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                var allText = rawFile.responseText;
                alert(allText);
            }
        }
    }
    rawFile.send(null);
}
当我调用函数
readTextFile(“file:///D:/test/text.txt");firebug中没有显示错误,但也没有显示警报。我使用Windows和Firefox 51.0.1(64位)。

我不想将函数
FileReader()
与按钮
结合使用,作为一般规则,不可能从JavaScript访问本地文件系统,因此您的代码示例不应该也不可能工作,因为浏览器安全

但是,有
文件
文件阅读器
API,允许您从
读取文件内容,实际上,这是您进行此类操作的唯一选项-您可以使用
文件阅读器.readAsText()
访问文件内容。这是一个很好的进一步信息资源:


完整的HTML和JavaScript文件,作为读取客户端数据文件的示例。客户端文件只能由FileReader访问,并指定用户选择的文件

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">
                function loadFile(o)
                {
                    var fr = new FileReader();
                    fr.onload = function(e)
                        {
                            showDataFile(e, o);
                        };
                    fr.readAsText(o.files[0]);
                }

                function showDataFile(e, o)
                {
                    document.getElementById("data").innerText = e.target.result;
                }
            </script>

        </script>
    </head>
    <body>
        Select file to read <input type="file" onchange="loadFile(this)">
        <pre id="data"></pre>
    </body>
</html>

函数加载文件(o)
{
var fr=new FileReader();
fr.onload=功能(e)
{
showDataFile(e,o);
};
fr.readAsText(o.files[0]);
}
函数showDataFile(e,o)
{
document.getElementById(“数据”).innerText=e.target.result;
}
选择要读取的文件

解决我的问题的最简单方法是将文本文件更改为
.js
文件,将其保存在同一文件夹中,并通过
将其包含在html文件中。所有内容都保存在我的计算机上。读取线程其他人也无法解决问题,尽管线程被标记为已解决。为什么不使用FileReader和相关API?我以前使用过它,它是有效的。“读取线程其他人也无法解决问题,尽管该线程被标记为已解决”——这不会改变其他讨论的基本结果:您不能随意读取本地文件,因为这将是一个巨大的安全问题。你需要用户交互让他们先选择文件。好的,谢谢你的解释。所以我不明白为什么链接线程的创建者会写“让它在浏览器[…]上工作”。因此,使用函数FileReader()和定义变量事件以及使用
也不会起作用?仅供参考,如果您的目标是IE11以下的任何内容,那么FileReader对您不可用:没有SHIM@Markus-这是一个老生常谈的问题,这类问题在过去可能有效,但由于其引入的安全问题,已被弃用。你不希望网站能够从你的计算机上“窃取”文件!又干净又甜!