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 ?

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");
	}
Merci pour vos eclaircissements eventuels.