Bonjour
Je souhaite télécharger un fichier créé par un serveur Java avec mon application Flex.
Mon code Flex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <mx:Script> <![CDATA[ private function downloadResultFile():void { var fr:FileReference = new FileReference(); var ur:URLRequest = new URLRequest("http://localhost:9090/monAppli/getResult"); fr.download(ur, "result.csv"); } ]]> </mx:Script> <mx:Button id="dlResult" label="Download result file" click="downloadResultFile()" />
Concernant la Servlet, j'utilise Spring MVC. Une Servlet centrale managée par Spring dispatche les requêtes sur divers controllers en fonction de l'URL. Le code du controller mappé sur l'URL getResult est le suivant :
Mon problème :
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 public class MonController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("Requete recue pour download"); File file = new File("test.csv"); System.out.println("file path = " + file.getAbsolutePath()); List<String> lines = new ArrayList<String>(); lines.add("dede;dede;dedede"); FileUtils.writeLines(file, lines); this.putFileInResponse(response, file); return null; } private void putFileInResponse(final HttpServletResponse response, final File file) throws IOException { response.setContentLength((int) file.length()); final FileInputStream fis = new FileInputStream(file); final OutputStream os = response.getOutputStream(); byte[] fileContent = new byte[4096]; int r = 0; while (r >= 0) { r = fis.read(fileContent); os.write(fileContent); } fis.close(); os.flush(); os.close(); } }
Lorsque je clique sur le bouton "Download result file" sur ma GUI Flex, une boîte de dialogue s'ouvre et me propose de sélectionner un emplacement pour sauvegarder mon fichier qui sera téléchargé. je sélectionne un emplacement puis clique sur OK. Et là rien ne sa passe ! Mon controller server side n'est pas appelé. Il semblerait qu'aucune requête ne parte vers l'appli JEE.
Merci d'avance pour votre aide.
Partager