Использование Open CSV для отправки файлов с сервета UPSTSTREAM
Вопрос
Я проанализировал объект JSON, который был отправлен на мой Tomcat Server с помощью поста и превратил его в файл 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();
}
. Решение
Что вы должны сделать, чтобы отправить файл пользователю с сервлета?
- Установите тип содержимого.
- Выписывайте байты.
Мне кажется, вы делаете это, но в неправильном порядке.Также, вместо того, чтобы использовать приложение / октет-поток, вы можете на самом деле сказать браузеру, это CSV.Вы можете также захотеть дать ему имя файла.
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();
.Не связан с StackOverflow