将文件发送到客户端Java Play

时间:2013-07-22 12:26:37

标签: java playframework-2.0

我尝试将CS​​V数据发送给客户端。

以下是我的进展方式: 客户端:ajax调用服务器获取文件。

$.ajax({
    url:"/csv/"+source,
    method:'post',
    data:JSON.stringify(json),
    contentType: "application/json; charset=utf-8"
});

服务器端:生成文件,然后将其发送回客户端。

   File file = CSVGenerator.generateFromJson(source, request().body().asJson());
    response().setHeader("Content-Lenght", String.valueOf(file.length()));
    response().setHeader("Content-Disposition", "attachment; filename=\""+file.toString()+"\"");
    return ok(file).as("text/csv");

我尝试了很多回报。例如我试过这个:

return ok(new FileInputStream(file)).as("text/csv");

我也试过很多标题,如:

response().setContent("text/csv");

response().setHeader("Content-Type","text/csv");

而不是.as("text/csv")

客户端获得的报告具有良好的标题,良好的数据,但从未开始任何下载。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

经过几个小时的研究,问题是下载无法从ajax调用开始。

以下是我如何解决问题:

感谢您的帮助:

window.open("/csv/"+source+"/"+encodeURIComponent(csvData));