Problème Ajax d'ouverture d'un fichier en attachement

Problème Ajax d'ouverture d'un fichier en attachement - HTML/CSS - Programmation

Marsh Posté le 25-11-2008 à 17:36:09    

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 :
  1. if (method.equals(\"getIndicators\" )) {
  2.    
  3. //Type de la réponse
  4. response.setHeader(\"Expires\", \"0\" );
  5. response.setHeader(\"Cache-Control\", \"must-revalidate, post-check=0, pre-check=0\" );
  6. response.setHeader(\"Pragma\", \"public\" );
  7. response.setContentType(\"application/vnd.ms-excel\" );
  8. response.setHeader(\"Content-Disposition\",\"attachment; filename = reporting.xls\" );
  9.    
  10. //Ecriture de la reponse
  11. String test = \"indice t valeur t note n\";
  12. OutputStream os = response.getOutputStream();
  13. OutputStreamWriter osw = new OutputStreamWriter(os);
  14.    
  15. osw.write(test);
  16. 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 :
  1. http_request.onreadystatechange = RegisterUser;
  2. http_request.open(\"POST\", \"/Servlet/SeinooServlet\", true );
  3. http_request.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\" );
  4. http_request.setRequestHeader(\"Content-length\", parameters.length);
  5. http_request.setRequestHeader(\"Connection\", \"close\" );
  6. 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 :jap:


Message édité par Kadaj le 25-11-2008 à 17:49:30
Reply

Marsh Posté le 25-11-2008 à 17:36:09   

Reply

Marsh Posté le 26-11-2008 à 11:05:40    

Aurais je un peu plus de chance en postant dans la partie Java?

Reply

Marsh Posté le 26-11-2008 à 11:29:18    

normal faut pas faire de requete "ajax", mais directement balancer le formulaire en mode post, comme tu retournes un fichier de type autre  que HTML/ou type que le navigateur t'ouvre, il ouvre dans ce cas automatiquement la boite de téléchargement

Reply

Marsh Posté le 26-11-2008 à 12:11:17    

Je vais tester ça, merci :jap:

Reply

Marsh Posté le 26-11-2008 à 13:33:50    

Nickel ça marche.
Merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed