Использование Open CSV для отправки файлов с сервета UPSTSTREAM

StackOverflow https://stackoverflow.com//questions/25067212

  •  23-12-2019
  •  | 
  •  

Вопрос

Я проанализировал объект 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();
}
.

Это было полезно?

Решение

Что вы должны сделать, чтобы отправить файл пользователю с сервлета?

  1. Установите тип содержимого.
  2. Выписывайте байты.
  3. Мне кажется, вы делаете это, но в неправильном порядке.Также, вместо того, чтобы использовать приложение / октет-поток, вы можете на самом деле сказать браузеру, это 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();
    
    .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top