使用javascript读取本地文本文件

时间:2017-02-07 11:08:50

标签: javascript

我想从本地html文件中读取本地文本文件,所以我尝试按照此帖子Javascript - read local text file中的解决方案,但建议的解决方案对我来说也不起作用:

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()与按钮<input type='file' onchange='openFile(event)' ...结合使用,因为在加载页面时需要自动读取文本文件。那么我怎样才能使解决方案成为上述解决方案呢?

读取链接的线程看起来像其他人也遇到问题,尽管线程被标记为已解决。

3 个答案:

答案 0 :(得分:6)

完整的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>

答案 1 :(得分:1)

作为一般规则,无法从JavaScript访问本地文件系统,因此您的代码示例不应该因浏览器安全而无法工作。

但是,FileFileReader API允许您从<input type="file" />读取文件的内容,实际上,这是您的唯一选择事情 - 您可以使用FileReader.readAsText()来访问文件内容。这是获取更多信息的良好资源:

https://www.html5rocks.com/en/tutorials/file/dndfiles/

答案 2 :(得分:0)

解决我的问题的最简单方法是将文本文件更改为.js文件,将其保存在同一文件夹中,并将其包含在html文件中<script src="test.js"></script>