Using Open CSV to Send files from ServletOutputStream
我已经解析了一个使用POST发送到我的TOMCAT服务器的JSON对象,并将其转换为CSV文件。我想将CSV文件发送回用户。我对如何发回文件感到困惑,因为我看到的所有示例都引用了存储在服务器上的实际文件-我的文件内置于内存中,并且据我所知实际上并未引用文件/文件描述符告诉。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //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(); } |
从servlet向用户发送文件需要做什么?
在我看来您正在执行此操作,但是顺序错误。另外,您可能不希望使用application / octet-stream来告诉浏览器这是CSV。您可能还想给它一个文件名。
1 2 3 4 5 6 | 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(); |