Bonjour,
j'ai travaillé sur une action qui permet de servir des fichiers stockés en BDD à un visiteur du site, elle prend un id en argument.
Le probleme, c'est que sous IE, cette action ouvre une nouvelle fenetre vide à chaque clic en plus de lancer la box de telechargement. Cela ne se produit pas sous firefox.
Quelqu'un aurait une piste pour qu'IE n'affiche que la boite de telechargement ?
Merci pour vos eclaircissements eventuels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String idFichier = request.getParameter("idFichier"); if(idFichier != null){ try { TaFichiers taFichiers = TaFichiers.getTaFichiers(Long.parseLong(idFichier)); InputStream in = taFichiers.getFichier().getStream(); // Afin de pouvoir exporter en https avec IE response.setHeader("Pragma", ""); response.setHeader("Cache-Control", ""); // Mettre un type au fichier renvoyé if ("pdf".equals(taFichiers.getTypeFichier().getExtension().toLowerCase())) { response.setContentType("application/pdf"); } else if ("csv".equals(taFichiers.getTypeFichier().getExtension().toLowerCase())) { response.setContentType("application/vnd.ms-excel"); } else if ("xls".equals(taFichiers.getTypeFichier().getExtension().toLowerCase())) { response.setContentType("application/vnd.ms-excel"); } else if ("doc".equals(taFichiers.getTypeFichier().getExtension().toLowerCase())) { response.setContentType("application/msword"); } else if ("pps".equals(taFichiers.getTypeFichier().getExtension().toLowerCase())) { response.setContentType("application/vnd.ms-powerpoint"); } response.setHeader("Content-Disposition", "attachment; filename="+taFichiers.getNomFichier()); OutputStream out = response.getOutputStream(); int val = 0; while((val=in.read())!=-1) { out.write(val); } out.flush(); out.close(); in.close(); return null; } catch (NumberFormatException e) { logger.error("l'id du fichier passé en parametre n'est pas un long : "+idFichier); return mapping.findForward("file.error"); } catch (Exception e) { logger.error("probleme interne a la base de donnees, table interrgee : TaFichiers avec l'id "+idFichier); return mapping.findForward("file.error"); } } return mapping.findForward("file.error"); }
Partager