Bonjour,

Je souhaite créer une servlet qui s'occuperait de distribuer des fichiers stockés sur le serveur Tomcat.
-> URL vers une servlet et pas un fichier directement -> controle
-> Log des téléchargements faits dans des tables SQL


Elle fonctionne sous firefox mais il y a un problème avec IE(7):

- Avec un .DOC
La boite "Téléchargement de fichiers" apparaît,
Ouvrir le fichier fonctionne.

Enregistrer sous ne fonctionne pas:
Un message apparaît "Internet explorer ne peut pas télécharger [nom servlet] de localhost.

Internet explorer n'a pas pu ouvrir ce site internet. le site requis n'est pas disponible ou n'a pas pu être trouvé. réessayer ultérieurement.


- Avec un .EXE, ce même message apparaît directement.

Voici la fonction de téléchargement de la servlet:
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
 
private void doDownload( HttpServletRequest req, HttpServletResponse resp, String filename ) throws Exception
	{ 
		resp.setContentType("application/octet-stream");
		File f = new File(filename);
		String disp = "attachment; filename="+ f.getName();
                         resp.setHeader("Content-Disposition", disp);  
 
		int length = (int)f.length(); 		   resp.setContentLength(length);
 
		OutputStream os = null;
		InputStream is = null; 
 
		try
		{
		      os = resp.getOutputStream();
		      FileInputStream stream = new FileInputStream(f);
		      BufferedInputStream  bis = new BufferedInputStream(stream);
		      is = new BufferedInputStream(bis);
		      int count;
		      byte buf[] = new byte[4096];
		      while ((count = is.read(buf)) > -1)
		      {
		          os.write(buf, 0, count);
		      }
		}
		catch (Exception ex)
		{ 
		   throw ex;
		}
		finally
		{ 
			if(is!=null)
				is.close(); 
 
			if(os!=null)
			{
				os.flush();
				os.close();
			}
		}
	}
Savez-vous ce qui n'est pas correct?
Merci.