如何在 Play 框架中以附件形式发送 CSV 文件?我查看了 Play 文档,但没有找到我要找的东西。我知道我可以返回这样的输入流:ok(java.io.InputStream content, int chunkSize)
但如何创建内容并将其发送到 csv 文件?
最佳答案
Play 可以轻松操作 HTTPResponse。您可以在the manual中找到,如何在响应中添加 header 、设置 cookie 等。
实现因用例而异:
- 某些字符串源在发送到客户端时会转换为 csv 文件。
- 现有 csv 文件将发送至客户端。
在 HTTPResponse 中将字符串作为 CSV 文件发送
Play 2.4
static private final String CSV_FILE_NAME = "demo.csv";
...
public Result string2CsvFile() {
String csvContent = "f1,f2,f3,f4";
response().setContentType("text/csv");
response().setHeader(CONTENT_DISPOSITION,
String.format("attachment; filename=\"%s\"", CSV_FILE_NAME));
return ok(new ByteArrayInputStream(csvContent.getBytes()));
}
Play 2.5
static private final String CSV_FILE_NAME = "demo.csv";
...
public Result string2CsvFile() {
String csvContent = "f1,f2,f3,f4";
response().setHeader(CONTENT_DISPOSITION,
String.format("attachment; filename=\"%s\"", CSV_FILE_NAME));
return ok(new ByteArrayInputStream(csvContent.getBytes())).as("text/csv");
}
在 HTTPResponse 中发送现有 CSV 文件
Play 2.4
static private final String CSV_FILE_NAME = "demo.csv";
...
public Result attachCsvFile() {
response().setContentType("text/csv");
response().setHeader(CONTENT_DISPOSITION,
String.format("attachment; filename=\"%s\"", CSV_FILE_NAME));
return ok(Play.application().getFile(CSV_FILE));
}
Play 2.5
static private final String CSV_FILE_NAME = "demo.csv";
...
public Result attachCsvFile() {
response().setHeader(CONTENT_DISPOSITION,
String.format("attachment; filename=\"%s\"", CSV_FILE_NAME));
return ok(Play.current().getFile(CSV_FILE)).as("text/csv");
}
关于java - Play Framework : Sending CSV file as an attachment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37756207/