我尝试将CSV数据发送给客户端。
以下是我的进展方式: 客户端: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")
客户端获得的报告具有良好的标题,良好的数据,但从未开始任何下载。
我错过了什么?
答案 0 :(得分:0)
经过几个小时的研究,问题是下载无法从ajax调用开始。
以下是我如何解决问题:
感谢您的帮助:
window.open("/csv/"+source+"/"+encodeURIComponent(csvData));