d3.csv无法上传一个目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了d3.csv无法上传一个目录相关的知识,希望对你有一定的参考价值。

我试图使用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)

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

答案

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

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

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

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

以上是关于d3.csv无法上传一个目录的主要内容,如果未能解决你的问题,请参考以下文章

将 d3.csv 方法转换为 d3.csv.parse 方法

fetch 未在 D3 csv 调用中定义

如何在 D3 v5 中从 CSV 文件加载数据

d3 csv在回调后丢弃数据

YouTube API v3 over HTTP POST:上传视频时无法设置片段(标题最终为“未知”)

java Ftp上传创建多层文件的代码片段