0

我尝试将 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")

客户端得到一个带有良好标头、良好数据的响应,但从不开始任何下载。

我错过了什么?

4

1 回答 1

0

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

这是我解决问题的方法:

感谢您的帮助:

window.open("/csv/"+source+"/"+encodeURIComponent(csvData));
于 2013-07-23T08:17:02.393 回答