Télécharger un fichier CSV depuis le serveur
Bonjour,
Dans mon application, j'aimerais pouvoir, en cliquant sur un lien, télécharger un fichier qui se trouve sur mon serveur. Le problème est qu'il m'ouvre le fichier dans mon browser alors que j'aimerais avoir un popup avec la botie de dialogue me proposant de le sauver ou de l'ouvrir.
Voici mon code actuel
Code:
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
|
public void downloadFile(ActionEvent event){
File file = new File(fileName);
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext() ;
ServletContext context = (ServletContext) externalContext.getContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
response.setContentType("application/csv");
String downloadFile = fileName ;
response.addHeader("Content-Disposition", "attachment; filename=\"" + downloadFile + "\"");
byte[] buf = new byte[1024];
try{
long length = file.length();
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
ServletOutputStream out = response.getOutputStream();
response.setContentLength((int)length);
while ((in != null) && ((length = in.read(buf)) != -1)) {
out.write(buf, 0, (int)length);
}
in.close();
out.flush();
out.close();
FacesContext.getCurrentInstance().responseComplete();
}catch (Exception exc){
exc.printStackTrace();
}
} |