Bonjour,
J'essaie de télécharger un fichier CSV d'un serveur tomcat vers un navigateur.
J'ai le code Java suivant :
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
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) {} }
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 :
Ma variable responseHeader contient bien la chaîne "application/csv".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var responseHeader = req.getResponseHeader("Content-Type");
Mais que faire ensuite pour que la fenêtre d'acceptation de téléchargement apparaisse ?
Merci d'avance.
Partager