我可以通过哪种方式将CSV文件发送到某处然后进行一些处理然后返回json数据?

时间:2017-10-01 02:13:24

标签: javascript php tomcat d3.js server

我正在做dc.js可视化数据和d3-force-layout。 dc.js基于d3和crossfilter,dc可以将csv文件作为输入文件处理,但d3-force-layout只能将json文件视为输入文件。所以我想将CSV文件发送到一些使用java程序将csv文件转换为json文件的地方,然后将其发送回d3-force布局使用。我已经尝试过php和javaEE来构建网页。但d3.js和dc.js无法加载到apache服务器和tomcat服务器上。 enter image description here

        <script src="JS/jquery-3.2.1.min.js" type="text/javascript"></script>
    <script src="JS/crossfilter-master/crossfilter.js" type="text/javascript"></script>         
    <script src="JS/d3-3.5.17/d3.js" type="text/javascript"></script>
    <script src="JS/dc.js-2.0.2/dc.js" type="text/javascript"></script>
    <script src="JS/d3-queue/d3-queue.js" type="text/javascript"></script>

这是我加载js库的代码。 这是JS发送请求。

$('#files').change(function(){
var q = d3.queue();
var fileNames = "";
for(var i = 0; i < this.files.length; i++){
    fileNames += ", " + this.files[i].name;
    q.defer(d3.csv, this.files[i].name);
}
q.awaitAll(drawDC);
$.get("http://localhost:8080/Charting/ChartingServlet?files="+fileNames, drawForceLayout);
// drawForceLayout('data.json');
$("#fileNames").html('');
if(this.files.length > 1)
    $("#fileNames").html(fileNames.substring(2));
});

function drawForceLayout(jsonFile){
    //start to draw
}

我还制作了一个servlet来处理请求获取文件,转换为json发送回来。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    if(request.getParameterMap().containsKey("files")) {
        String files = request.getParameter("files");
        System.out.println(files.toString());

        ////call the java program to convert CSV files to json then sent the file name or the content back.

        response.setHeader("Content-type", "text/html;charset=UTF-8");
        response.getWriter().append("data.json");
    }
}

This is the Tomcat server index.html是主页。

我的问题是如何实现这一点,我是否对这些服务器做错了什么?

1 个答案:

答案 0 :(得分:-2)

看看这个区块:https://bl.ocks.org/mbostock/2949937。您将看到d3.csv功能正在运行。