Bonjour à tous!
Je développe actuellement une servlet qui est interfacée à une base de données SQL. Le but est d'extraire des données de la base pour caculer des indices, transmis ensuite à l'utilisateur via un fichier XLS.
Tout est OK pour la partie interaction entre la servlet et la base SQL.
Le problème provient lors de l'envoi du fichier réponse à l'utilisateur. Sa création se fait de la manière suivante dans le code Java :
Si j'accède directement à la méthode en tapant dans mon navigateur :
http://localhost:8080/MaServlet?method=getIndicators
La boîte de téléchargement s'ouvre et je peux enregistrer mon fichier normalement. Cependant, l'accès à cette méthode se fait après avoir rempli un formulaire dans une page Javascript afin de déterminer les infos que l'utilisateur désire. Une fois le formulaire rempli, une requête Ajax est créée et envoyée à ma servlet
Code :
- if (method.equals(\"getIndicators\" )) {
-
- //Type de la réponse
- response.setHeader(\"Expires\", \"0\" );
- response.setHeader(\"Cache-Control\", \"must-revalidate, post-check=0, pre-check=0\" );
- response.setHeader(\"Pragma\", \"public\" );
- response.setContentType(\"application/vnd.ms-excel\" );
- response.setHeader(\"Content-Disposition\",\"attachment; filename = reporting.xls\" );
-
- //Ecriture de la reponse
- String test = \"indice t valeur t note n\";
- OutputStream os = response.getOutputStream();
- OutputStreamWriter osw = new OutputStreamWriter(os);
-
- osw.write(test);
- osw.flush();
|
La servlet reçoit bien la requête, le traitement s'effectue sans erreur, et la réponse est envoyée à l'utilisateur. Cependant, pas de boîte de téléchargement, je ne peux pas accéder au fichier. Il est pourtant bel et bien présent puisqu'en vérifiant les headers de la requête, ceux-ci correspondent bien à ce que j'ai déclaré dans ma servlet. Le contenu du fichier peut même être affiché à l'aide de
http_request.responseText.
Code :
- http_request.onreadystatechange = RegisterUser;
- http_request.open(\"POST\", \"/Servlet/SeinooServlet\", true );
- http_request.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\" );
- http_request.setRequestHeader(\"Content-length\", parameters.length);
- http_request.setRequestHeader(\"Connection\", \"close\" );
- http_request.send(parameters);
|
Ma question est donc la suivante : est-il possible de forcer la page Javascript à m'ouvrir mon fichier situé en attachment et donc à m'afficher la boîte de dialogue de téléchargement?
Merci d'avance et désolé pour la longueur du texte
Message édité par Kadaj le 25-11-2008 à 17:49:30