【问题标题】:Using Open CSV to Send files from ServletOutputStream使用 Open CSV 从 ServletOutputStream 发送文件
【发布时间】:2014-07-31 19:18:29
【问题描述】:

我已经解析了一个使用 POST 发送到我的 TOMCAT 服务器的 JSON 对象,并将其转换为 CSV 文件。我想将 CSV 文件发回给用户。我对如何将文件发回感到困惑,因为我看到的所有示例都引用了存储在服务器上的实际文件——我的文件是在内存中构建的,并且实际上并没有尽可能地引用文件/文件描述符告诉。

//The doPost method has already generated the String[] - I then call generateCSV


protected void generateCSV(ArrayList<String[]> data, ServletOutputStream out,
                           HttpServletResponse response)
{
    try{
        BufferedWriter buff = new BufferedWriter(new OutputStreamWriter(out));
        CSVWriter writer = new CSVWriter(buff);
            writer.writeAll(data);
            writer.close();

        sendFile(response, out);

    }catch(IOException | ServletException e){

        e.printStackTrace();
    }


}


protected void sendFile(HttpServletResponse response, ServletOutputStream outstream)throws ServletException, IOException
{
    response.setContentType("application/octet-stream");
    outstream.flush();
    outstream.close();
}

【问题讨论】:

    标签: servlets csv java-ee-7


    【解决方案1】:

    从 servlet 向用户发送文件需要做什么?

    1. 设置内容类型。
    2. 写出字节。

    在我看来,您正在这样做,但顺序错误。此外,您可能希望实际告诉浏览器这是 CSV,而不是使用 application/octet-stream。您可能还想给它一个文件名。

        response.setContentType("text/csv");
        response.setHeader("Content-Disposition","filename=whatever.csv");
        BufferedWriter buff = new BufferedWriter(new OutputStreamWriter(out));
        CSVWriter writer = new CSVWriter(buff);
            writer.writeAll(data);
            writer.close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 2013-11-10
      • 2013-07-31
      • 1970-01-01
      相关资源
      最近更新 更多