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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.activation.MimetypesFileTypeMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
/**
* Action d'export au format csv et pdf.
*
* @author xxxxxx
*/
public class EditionDocumentServlet extends HttpServlet
{
/**
* UID.
*/
private static final long serialVersionUID = 0L;
/**
* Logger pour traçage des log.
*/
private final Logger log = LogFactory.getLogger( EditionDocumentServlet.class );
/**
* Méthode d'execution.
*
* @param request
* HttpServletRequest : la requête initiale
* @param response
* HttpServletResponse : la réponse à la requête
* @throws ServletException :
* en cas de problème d'accès base
*/
public void doPost ( HttpServletRequest request, HttpServletResponse response )
throws ServletException
{
log.debug( "Préparation à l'édition du document" );
String repertoire = request.getParameter("repertoire");
String nomFichier = request.getParameter("fichier");
FileInputStream fichier = null;
try
{
File file = new File( repertoire, nomFichier );
fichier = new FileInputStream( file );
String contentType = null;
if (nomFichier.substring(nomFichier.length() - 4).equalsIgnoreCase(".pdf"))
{
contentType = "application/pdf";
}
else
{
contentType = MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType( file );
}
log.info("Mime type : " + contentType);
response.setHeader("Pragma", "public");
response.setDateHeader("Expires", 0);
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType(contentType);
response.setHeader( "Content-disposition", "inline; filename=\"" + nomFichier + "\"" );
DataOutputStream vDataOutputStream = new DataOutputStream( response.getOutputStream() );
byte[] flux = new byte[100000];
while (fichier.read(flux) != -1)
{
vDataOutputStream.write( flux );
}
log.info( "Ecriture du rapport dans la reponse HTTP" );
vDataOutputStream.close();
}
catch ( FileNotFoundException fne )
{
log.error("Le fichier " + nomFichier + " n'existe pas ");
throw new ServletException( fne.getMessage(), fne );
}
catch ( IOException ioe )
{
log.error( "Erreur IO lors de la génération de l'édition", ioe );
throw new ServletException( ioe.getMessage(), ioe );
}
catch ( Exception e )
{
log.error( "Erreur lors de l'écriture du flux", e );
throw new ServletException( e.getMessage(), e );
}
}
} |
Partager