Bonjour,

J'essaie de télécharger un fichier CSV d'un serveur tomcat vers un navigateur.

J'ai le code Java suivant :

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
 
		response.setContentType("application/csv");
		response.setHeader("Content-Disposition", "attachment;filename=timefull.xml");
 
		ServletOutputStream out = response.getOutputStream();
		File file = null;
		BufferedInputStream from = null;
		try { 
			//dans mon cas le filepath et le path complet après création
			// d'un temp file 
			String filepath = Environment.getEnv().getWebContentPath() + "\\graph\\34\\timefull.xml";
			file = new File(filepath);
			response.setContentLength((int) file.length()); 
			int bufferSize = 64 * 1024;
			long time = System.currentTimeMillis();
 
			try {
				from = new BufferedInputStream(new FileInputStream(file), bufferSize * 2);
				byte[] bufferFile = new byte[bufferSize];
				for (int i = 0; ; i++) {
					int len = from.read(bufferFile); 
					if (len < 0) break; 
					out.write(bufferFile, 0, len);
				}
				out.flush();
			} finally { 
				try { 
					from.close();
				} catch (Exception e) { } 
				try { 
					out.close();
				} catch (Exception e) {} 
			} 
			time = (System.currentTimeMillis() - time) / 1000; 
			// seconds download 
			double kb = (file.length() * 1.0 / 1024);
 
			if (file != null) file.delete(); 
		} catch (Exception e) {
			return; 
		} finally { 
			try { 
				file.delete();
			} catch (Exception ex) {}
		}
Il fonctionne très bien dans la méthode doPost de la servlet "Test" quand je l'appelle en mode non-asynchrone, c'est à dire à partir de la page html avec ce code là:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<form method="post" action="./Test">
	<input type="submit" value="DL"></input>
</form>

En revanche, quand je l'appelle de manière asynchrone via javascript, le fichier est bien envoyé par la servlet, mais je n'arrive pas à la gérer avec javascript.

J'ai le code javascript suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
var responseHeader = req.getResponseHeader("Content-Type");
Ma variable responseHeader contient bien la chaîne "application/csv".

Mais que faire ensuite pour que la fenêtre d'acceptation de téléchargement apparaisse ?

Merci d'avance.