Question

J'ai analysé un objet JSON envoyé à mon serveur Tomcat à l'aide de l'article et l'a transformé en fichier CSV.Je voudrais envoyer le fichier CSV à l'utilisateur.Je suis confus sur la manière d'envoyer le fichier en arrière car tous les exemples que j'ai vue de référence Un fichier réel stocké sur le serveur - mon fichier est intégré en mémoire et ne fait pas référence à un descripteur de fichier / fichier aussi loin que possibledire.

//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();
}

Était-ce utile?

La solution

Que devez-vous faire pour envoyer un fichier à l'utilisateur d'un servlet?

  1. Définissez le type de contenu.
  2. Écrivez les octets.
  3. me semble que vous faites cela, mais dans le mauvais ordre.En outre, plutôt que d'utiliser l'application / l'octet-flux, vous voudrez peut-être réellement dire au navigateur, c'est CSV.Vous voudrez peut-être aussi lui donner un nom de fichier.

        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();
    

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top