[英]How do I serve csv files using java spark?
我正在使用spark为正在编写的Web应用程序运行服务器端。 我搜索了一下文档,但是空了一下。.是否有一种方法可以将数据提供给前端,以便它自动以CSV文件的形式为用户下载? 我尝试用作csv的数据看起来像这样。
// example data... returned by "getData()"
JSONArray test = new JSONArray()
.put(
new JSONArray().put("foo").put("bar")
)
.put(
new JSONArray().put(1).put(2)
);
// route
get("/csv/:path", "application/json", (req, res) -> {
res.type("text/csv");
JSONArray reply = getData(req);
return data;
});
我正在看文档的ResponseTransformers部分,但是我不知道如何将数据作为可下载的csv文件而不是json对象提供。 我假设ResponseTransformer将需要以某种方式进行子类化,但是我找不到一个示例来做我想做的事情。 谁能给我提供一个例子,或向我介绍一些说明如何做到这一点的文档?
编辑:我能够在javascript端这样调用我的路线。
window(route);
这使我可以选择计算机上的程序来下载响应。 但是,数据在记事本中看起来像这样
[["foo","bar"],[1,2]]
因此,请关闭..但不完全是一个csv文件。 我希望输出看起来像这样。
foo,bar
1,2
我认为您可以使用StringBuilder来呈现csv文件,就像这个答案一样。 我还认为您的请求"application/json"
的第二个参数也可以删除。 它看起来像这样:
// route
get("/csv/:path", (req, res) -> {
res.type("text/csv");
StringBuilder sb = new StringBuilder();
sb.append("id");
sb.append(',');
sb.append("Name");
sb.append('\n');
sb.append("1");
sb.append(',');
sb.append("Zack");
sb.append('\n');
return sb.toString();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.