java - Play Framework : Sending CSV file as an attachment

标签 java csv playframework

如何在 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/

相关文章:

java - 读取 CSV 中的换行符,这些换行符在 spring 批处理的 FlatfileItemReader 中的文件中引用

java - 在 PlayFramework with Morphia 中,如何更新对象?

multithreading - 当向服务器添加更多资源时,Play Framework会进行线程池扩展吗

Java编译器/解释器

Java创建csv文件,其中列中的数据不是内联的

java - RandomAccessFile 正确写入文件,但检索记录时失败

python - 在 CSV 中查找最小值并在 Python 中打印包含它的每一行

Scala:读取 Enumerator[T] 的一些数据并返回剩余的 Enumerator[T]

java - 多次实例化默认类加载器

字符串的java正则表达式