Javascript-读取客户端目录中的文件

Javascript-读取客户端目录中的文件,javascript,readfile,Javascript,Readfile,我是一个学习javascript的新程序员,实际上我是js新手。 我有一个任务,需要一个网页能够读取客户端目录中的文件。我有一些js代码: <html> <script type="text/javascript"> function ReadWeight() { var filePath = "file:///D:/Text.txt"; var xmlhttp = new XMLHttpRequest(); xml

我是一个学习javascript的新程序员,实际上我是js新手。 我有一个任务,需要一个网页能够读取客户端目录中的文件。我有一些js代码:

<html>
<script type="text/javascript">
    function ReadWeight() {
        var filePath = "file:///D:/Text.txt";
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET",filePath,false);
        xmlhttp.send(null);
        var fileContent = xmlhttp.responseText; 

        alert(fileContent);
    }

    ReadWeight();
</script>
<body>
</body>
</html>
但是当我把它放在本地主机中并访问它时,JS就不起作用了

在web服务器中时,我的代码是否不正确?
请帮助我。

我可以建议使用错误控制台显示错误,以便人们知道如何帮助您吗?=]并将其粘贴到查询中


下载firebug之类的东西,看看是否有请求(针对FireFox)

看起来您更希望通过http://protocol访问该文件,而不是file://

据我所知,您只能使用
元素读取客户端文件。获得文件后,您可以多次读取:

HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>File Refresh</title>
  <script src="filerefresh.js"></script>
</head>

<body>
  <input id="fileInput" type="file">
  <pre id="fileDisplay"></pre>
</body>
</html>
(function() {
    var sleepInterval = 1000; // 1 second
    var fileInput;
    var fileDisplay;
    var reader;
    var id = undefined;
    function initialize() {
        fileInput = document.getElementById("fileInput");
        fileDisplay = document.getElementById("fileDisplay");
        reader = new FileReader();
        reader.onloadend = function() {
            fileDisplay.innerHTML = reader.result;
            reschedule();
        };
        fileInput.addEventListener("change", readFile);
    }
    function reschedule() {
        if (id !== undefined) {
            clearTimeout(id);
        }
        id = setTimeout(readFile, sleepInterval);
    }
    function readFile() {
        reader.readAsText(fileInput.files[0]);
    }

    window.onload = initialize;
})();

如果我读对了你的代码。。。您希望从服务器读取客户端计算机上的文件。如果是这样,你不能这样做-这将是一个重大的安全违规。但是,您可以提供type=“file”输入,允许用户选择要上载的文件。谢谢@scunliffe。我明白了。我的给定任务是每秒钟定期读取文件。该web应用程序旨在显示每个文件的更改。我将使用“设置超时”。在我看来,使用type=“file”只能读取文件一次。我是不明白,还是这个场景有什么解决方案?我对你的需求有点困惑。。。你真的需要每秒读取一个远程文件吗?这似乎非常“昂贵”,我怀疑文件不会经常更改。也就是说,如果“客户端”上的远程文件实际上是另一台服务器。。。然后,您可以通过对远程服务器的AJAX调用来访问该文件。但是,如果您试图从最终用户的个人计算机上重复读取文件,出于安全原因,您将无法执行此操作。谢谢@user2464810的建议。我用firebug在我的浏览器中完成。运行控制台后,我发现了一个错误:NS_Error_DOM_BAD_URI:Access to restricted URI denied[Break On This Error]xmlhttp.send(null);我不知道如何修复它,请帮帮我:)
(function() {
    var sleepInterval = 1000; // 1 second
    var fileInput;
    var fileDisplay;
    var reader;
    var id = undefined;
    function initialize() {
        fileInput = document.getElementById("fileInput");
        fileDisplay = document.getElementById("fileDisplay");
        reader = new FileReader();
        reader.onloadend = function() {
            fileDisplay.innerHTML = reader.result;
            reschedule();
        };
        fileInput.addEventListener("change", readFile);
    }
    function reschedule() {
        if (id !== undefined) {
            clearTimeout(id);
        }
        id = setTimeout(readFile, sleepInterval);
    }
    function readFile() {
        reader.readAsText(fileInput.files[0]);
    }

    window.onload = initialize;
})();