使用js从本地存储中读取文件

时间:2014-09-15 06:45:37

标签: javascript

我正在使用java脚本从我的电脑上读取txt文件。 我试着用3种方式做到这一点:

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;
                        console.log(allText);
                    }
                }
            }
            rawFile.send(null);
        }
        console.log("1");
        readTextFile("text.txt"); //GOOD
        console.log("2");
        readTextFile("D:/Documents/Documents/Aptana Studio 3 Workspace/Yonit_web_services/test/text.txt"); //BAD
        console.log("3");
        readTextFile("file:///D:/Documents/Documents/Aptana Studio 3 Workspace/Yonit_web_services/test/text.txt"); //BAD

所有这些都指向同一个文件 我得到了这样的错误:

XMLHttpRequest无法加载file:/// D:/Documents/Documents/Aptana%20Studio%203%20Workspace/Yonit_web_services/test/text.txt。仅支持HTTP的跨源请求。 test.html:21readTextFile test.html:21(匿名函数)test.html:26

那是什么意思?感谢。

4 个答案:

答案 0 :(得分:1)

我有一段时间遇到同样的问题。我通过Windows命令提示符使用以下参数打开Chrome修复此问题:--disable-web-security

请注意,这存在安全漏洞。

答案 1 :(得分:0)

由于安全原因,浏览器不允许通过javascript进行文件访问,请在下面找到链接。

Security

但是在HTML5中它可以通过使用文件上传/下载,链接 File Uplaod/Download

答案 2 :(得分:0)

读取文件的第一种方法:

readTextFile("text.txt"); //GOOD

正在运行,因为"text.txt"是一个相对路径,如果你有文件系统,那就是相同的路径:

\index.html
\img\img.png
在这方面,

img.png可以访问index.html,您可以通过使用相对路径访问父目录和parrent父目录中的文件和文件夹。

从Windows命令提示符,您可以使用dir测试这些相对路径,如下所示:

REM Dir will show contents of current directory
Dir
REM Dir .. will show contents of parent directory
Dir ..
REM Dir ../.. will show contents of parent's parent directory
Dir ../..

相同的路径 应该在JavaScript

中工作

话虽如此,d:/file://D:/的限制很可能是出于安全原因。您可以查看http://en.wikipedia.org/wiki/Samba_%28software%29了解详情。

答案 3 :(得分:0)

您可以随时做一件事,将其放在应用程序访问它的某个URL上(仅当它不包含任何安全信息时)。