java - 在 Java Servlet 中下载 CSV 文件

标签 java csv servlets

String fileName = "/CSVLogs/test";
         String fileType = "csv";
         resp.setContentType(fileType);

         resp.setHeader("Content-disposition","attachment; filename=test.csv");

         File my_file = new File(fileName);

         OutputStream out = resp.getOutputStream();
         FileInputStream in = new FileInputStream(my_file);
         byte[] buffer = new byte[4096];
         int length;
         while ((length = in.read(buffer)) > 0){
            out.write(buffer, 0, length);
         }
         in.close();
         out.flush();

我需要下载一个 csv 文件,但它似乎返回“java.lang.IllegalStateException:WRITER”

<form enctype="multipart/form-data" action="/TestServlet/ConfigServlet?do=downloadLogs" method="post" style="height:68px;">

UPDATE

resp.setContentType("application/octet-stream");
            try
            {
                OutputStream outputStream = resp.getOutputStream();
                InputStream in = StorageUtil.getInstance().getFile("/CSVLogs/test.csv").getInputStream();
            /*    InputStream in = StorageUtil.getInstance().getCSVLogsZip().getInputStream();*/
                byte[] buffer = new byte[4096];
                 int length;
                 while ((length = in.read(buffer)) > 0){
                    outputStream.write(buffer, 0, length);
                    in.close();
                    outputStream.flush();
                 }
            }
            catch(Exception e) {
                System.out.println(e.toString());
            }

我仍然遇到同样的错误。 java.lang.IllegalStateException:WRITER

(喝醉了)为什么我会收到此错误>_<

最佳答案

试试这个:

public void doGet(HttpServletRequest request, HttpServletResponse response)
{
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=\"test.csv\"");
try
{
    OutputStream outputStream = response.getOutputStream();
    FileInputStream in = new FileInputStream(my_file);
    byte[] buffer = new byte[4096];
     int length;
     while ((length = in.read(buffer)) > 0){
        outputStream.write(buffer, 0, length);
 in.close();
     outputStream.flush();
     }
}
catch(Exception e)
{
    model.closeConnection();
    System.out.println(e.toString());
    }
}

关于java - 在 Java Servlet 中下载 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070286/

相关文章:

Java游戏旋转图像和轴

java - ComponentScan excludeFilters 在 Spring 4.0.6.RELEASE 中不起作用

regex - 使用 csv 格式的非结构化 GPS 数据包创建结构化 hive 表

java - jsp中页面加载时的get方法

java - 我正在尝试使用 servlet 在文本文件中附加文本,这会出现错误

FilterChain doFilter 方法中的 java.lang.NullPointerException

java - 如何将单个项目添加到现有微调器?

java - 输入流或读取器。具有相同逻辑的方法

java - 如何使用 Java 创建基于 CSV 文件的 Excel 文件?

python - 如何在不更改特定列的情况下对数据框中的数据进行重新采样?