d3.csv无法上传一个目录

问题描述 投票:5回答:1

我试图使用d3.csv引用位于父文件夹中的文件,我无法找到正确的语法。

我的文件夹结构如下:

root
└── js
    ├── data.csv
    └── myGraph.js

在js文件夹里面我有myGraph.js。在这个文件中,我有以下代码:

d3.csv("data.csv", function(error, data) {
   data.forEach(function(d) {
   d.date = parseDate(d.date);
   d.close = +d.close;
});

如果我将我的data.csv放在js文件夹中,一切正常。但是,如果我在根文件夹中移动data.csv文件

root
├── data.csv
└── js       
    └── myGraph.js

并将代码更改为此然后它停止工作:

d3.csv("/../data.csv", function(error, data)

我也尝试过:

d3.csv("../data.csv", function(error, data)

有谁知道我做错了什么以及正确的语法是什么?非常感谢。

javascript d3.js navigation
1个回答
6
投票

罗伯特 - 要完成这项工作,还有很多工作要做:

1)由于浏览器安全模型,您无法通过直接指定本地目录中文件的绝对路径或相对路径,从浏览器直接引用/加载本地计算机上的文件。您必须使用本地网络服务器来提供您的文件并使其可供浏览器访问(或者您将它们上传到您可以在d3.csv调用中指定的URL ...但这将是乏味的)。

2)通常,您可以在包含.js.html文件的目录中运行基本HTTP服务器。例如,如果您在系统范围内安装了Python 3,则可以使用python -m http.server从命令行启动目录中的HTTP服务器。然后你可以在http://localhost:8000上访问你的站点。不幸的是,这个基本服务器只提供它所启动的目录中的文件,并且不允许对它所启动的目录之外的其他文件进行相对路径引用。为此,你需要运行一个功能更强大/更灵活的本地Web服务器,可以设置为允许在一堆文件夹中相对路径引用文件。

这有点单调乏味,但为什么浏览器不允许直接访问本地文件是有道理的。

© www.soinside.com 2019 - 2024. All rights reserved.