使用本地计算机上的js / html文件读取本地文本文件

时间:2018-06-28 14:13:59

标签: javascript

我已经在一个单独的文件中构建了一个简单的html页面,其中包含javascript,只需按一下按钮即可。

我已经在chrome中打开了html文件,其路径类似于:file:///home/tom/projects/index.html

javascript需要使用硬编码路径读取同一目录中的JSON文件(file:///home/tom/projects/mydata.json)。

我真的很努力做到这一点。据我了解,这是因为我正在使用客户端js(例如,我不能使用file:///home/to....库),这限制了我的选择。

根据问题here,如果我使用以下格式的URL,则无法加载文件:var selectedFile = document.getElementById('input').files[0]; function readFile (file_path) { var reader = new FileReader(); reader.readAsText(file_path); console.log(reader.substring(0, 100)); }; ,因为它给了我错误:

  

跨源请求仅支持以下协议方案:HTTP,数据,chrome,chrome扩展名,https。

如答案所示,如果我启动HTTP服务器,则可以使用服务器端模块,但如果可能的话,我希望避免这种情况。

我注意到许多答案都建议使用类似this的对话框:

file:///home/tom/projects/mydata.json

但是我无法使用以下格式的路径进行操作:file:///home/to....

有没有一种方法可以使用客户端JavaScript从{{1}}格式的URL加载带有硬编码路径的.json文件(即不要求用户从选择框中选择文件)?

1 个答案:

答案 0 :(得分:1)

这是蓄意的安全限制,以阻止用户进入然后打开HTML页面,然后尝试读取其磁盘。

在网络服务器上运行页面(如该问题所建议),然后您可以使用JavaScript从URL(例如http://localhost/projects/mydata.json之类的JSON中加载),也可以使用服务器端语言来获取并显示它在呈现的HTML中。无论哪种方法都可以,第一种方法可能更简单并且最接近您现在所拥有的。

从HTTP服务器为HTML页面提供服务总是要好得多。