Proposer un téléchargement/ouverture de fichier depuis 1 web-app

Proposer un téléchargement/ouverture de fichier depuis 1 web-app - HTML/CSS - Programmation

Marsh Posté le 30-04-2003 à 10:11:02    

Je n'comprend pas. Avant il me semble que le code suivant fonctionnait. Et là, sous Mozilla 1.3, ça me propose uniquement d'ouvrir le fichier. :-(
 

Code :
  1. private void SetAdaptedContentType (HttpServletResponse _response, JLdsPage _page) {
  2.         // le moteur MIME de la web-app cherche le type MIME du document électronique à afficher
  3.         String strContentType = _page.MIMEType (getServletContext ());
  4.         // SI aucun type MIME trouvé, proposer le téléchargement
  5.         if (strContentType == null) {
  6.             File file               = _page.getPageFile();
  7.             strContentType          = "application/octet-stream";
  8.             String strContentDisp   = "attachment;filename=" + file.getName ();
  9.             _response.setHeader ("Content-Disposition", strContentDisp);
  10.             _response.setContentLength ((int) file.length ());
  11.         }
  12.         m_Logger.debug("Affichage d'un contenu MIME de type : " + strContentType);
  13.         _response.setContentType(strContentType);
  14.     }

 
 
après avoir faire ça, je balance au navigateur le fichier en binaire. Vous voyez ici qqch de pas claire !?


Message édité par El_gringo le 30-04-2003 à 10:11:31
Reply

Marsh Posté le 30-04-2003 à 10:11:02   

Reply

Marsh Posté le 30-04-2003 à 11:14:02    

El_gringo a *crit :

Je n'comprend pas. Avant il me semble que le code suivant fonctionnait. Et l*, sous Mozilla 1.3, *a me propose uniquement d'ouvrir le fichier. :-(
 

Code :
  1. private void SetAdaptedContentType (HttpServletResponse _response, JLdsPage _page) {
  2.         // le moteur MIME de la web-app cherche le type MIME du document *lectronique * afficher
  3.         String strContentType = _page.MIMEType (getServletContext ());
  4.         // SI aucun type MIME trouv*, proposer le t*l*chargement
  5.         if (strContentType == null) {
  6.             File file               = _page.getPageFile();
  7.             strContentType          = "application/octet-stream";
  8.             String strContentDisp   = "attachment;filename=" + file.getName ();
  9.             _response.setHeader ("Content-Disposition", strContentDisp);
  10.             _response.setContentLength ((int) file.length ());
  11.         }
  12.         m_Logger.debug("Affichage d'un contenu MIME de type : " + strContentType);
  13.         _response.setContentType(strContentType);
  14.     }

 
 
apr*s avoir faire *a, je balance au navigateur le fichier en binaire. Vous voyez ici qqch de pas claire !?


 
C'est peut-etre parceque la partie qui sert a force le download n'est mise dans les Header que pour les fichiers de type MIME incoonu :)
 

Reply

Marsh Posté le 30-04-2003 à 11:21:41    

Kristoph a écrit :


 
C'est peut-etre parceque la partie qui sert a force le download n'est mise dans les Header que pour les fichiers de type MIME incoonu :)
 
 


 
Ha, tu dois avoir raison, bien sur.
Le problème, c'est que, pour les fichiers de type connu, si je voudrais :
utiliser l'éventuel plugin dispo sur le navigateur (Acrobat reader, word, ...), et si pas de plugin, proposer de télécharger le fichier. Si je met "attachment" et compagnie dans le header, on ne pourra que downloader; jamais utiliser le plugin du navigateur.

Reply

Marsh Posté le 30-04-2003 à 11:37:47    

C'est pas le comportement par defaut de tout navigateur qui se respecte ca ???

Reply

Marsh Posté le 30-04-2003 à 11:39:57    

Kristoph a écrit :

C'est pas le comportement par defaut de tout navigateur qui se respecte ca ???


 
Ben, non. Quand, en écrivant "attachement" (et tt le reste) dans le header, j'pense qu'on précise explicitement au navigateur de proposer le téléchargement du fichier. Donc, même s'il a le plugin qu'il faut, il s'en tape. J'pense...

Reply

Marsh Posté le 30-04-2003 à 11:46:50    

El_gringo a écrit :


 
Ben, non. Quand, en écrivant "attachement" (et tt le reste) dans le header, j'pense qu'on précise explicitement au navigateur de proposer le téléchargement du fichier. Donc, même s'il a le plugin qu'il faut, il s'en tape. J'pense...


 
exact. mais tu n'as pas la possibilité de tester si un utilisateur à les bon plug-in en restant du coté serveur. tu vas devoir faire un choix (éventuellement via JS, mais c'est pas top)

Reply

Marsh Posté le 30-04-2003 à 12:08:27    

El_gringo a *crit :


 
Ben, non. Quand, en *crivant "attachement" (et tt le reste) dans le header, j'pense qu'on pr*cise explicitement au navigateur de proposer le t*l*chargement du fichier. Donc, m*me s'il a le plugin qu'il faut, il s'en tape. J'pense...


 
Ce que je demandais c'etait de savoir si ce que tu voulais faire n'etait pas le comportement par defaut des navigateurs. En tout cas, c'est ce que j'ai compris.

Reply

Marsh Posté le 30-04-2003 à 12:10:02    

Kristoph a écrit :


 
Ce que je demandais c'etait de savoir si ce que tu voulais faire n'etait pas le comportement par defaut des navigateurs. En tout cas, c'est ce que j'ai compris.


 
Non, j'veux pas faire la même chose. G expliqué nu peu au dessus ce que j'voulais faire.

Reply

Marsh Posté le 30-04-2003 à 12:16:24    

El_gringo a *crit :


 
Ha, tu dois avoir raison, bien sur.
Le probl*me, c'est que, pour les fichiers de type connu, si je voudrais :
utiliser l'*ventuel plugin dispo sur le navigateur (Acrobat reader, word, ...), et si pas de plugin, proposer de t*l*charger le fichier. Si je met "attachment" et compagnie dans le header, on ne pourra que downloader; jamais utiliser le plugin du navigateur.


 
Je dois pas etre en grosse forme moi car pour moi c'est le comportement par defaut de mon navigateur ca ...

Reply

Marsh Posté le 30-04-2003 à 14:10:40    

Kristoph a écrit :


 
Je dois pas etre en grosse forme moi car pour moi c'est le comportement par defaut de mon navigateur ca ...


 
Ben, Mozilla 1.3, si je lui met pas "attachement" et compagnie dans le header, juste le content type, et que le plugin correspondant au type MIME n'est pas dispo, il me propose l'ouverture du fichier, pas l'enregistrement.

Reply

Marsh Posté le 30-04-2003 à 14:10:40   

Reply

Marsh Posté le 30-04-2003 à 14:27:06    

El_gringo a *crit :


 
Ben, Mozilla 1.3, si je lui met pas "attachement" et compagnie dans le header, juste le content type, et que le plugin correspondant au type MIME n'est pas dispo, il me propose l'ouverture du fichier, pas l'enregistrement.


 
Donc, la seule chose que tu veux faire c'est demander a Mozilla de ne pas proposer l'ouverture du fichier quand il ne connais pas l'appli a utiliser ?
 
C'est un comportement decide par l'utilisateur. La question est la pour lui demander quel est l'application associee justement. Il n'y a tres probablement aucun moyen de controler ca en HTML.
 

Reply

Marsh Posté le 30-04-2003 à 14:44:12    

Kristoph a écrit :


 
Donc, la seule chose que tu veux faire c'est demander a Mozilla de ne pas proposer l'ouverture du fichier quand il ne connais pas l'appli a utiliser ?
 
C'est un comportement decide par l'utilisateur. La question est la pour lui demander quel est l'application associee justement. Il n'y a tres probablement aucun moyen de controler ca en HTML.


 
Non, ce que j'aurait voulu faire (dans le cas ou pas de plugin associé au type MIME des données), c'est que Mozilla (ou autre) propose l'ouverture OU l'enregistrement (téléchargement) du fichier à visualiser.

Reply

Marsh Posté le 30-04-2003 à 15:25:52    

El_gringo a *crit :


 
Non, ce que j'aurait voulu faire (dans le cas ou pas de plugin associ* au type MIME des donn*es), c'est que Mozilla (ou autre) propose l'ouverture OU l'enregistrement (t*l*chargement) du fichier * visualiser.


 
C'est la ou c'est bizarre, car c'est exactement le comportement de Mozilla chez moi. :)

Reply

Marsh Posté le 30-04-2003 à 15:27:25    

Kristoph a écrit :


 
C'est la ou c'est bizarre, car c'est exactement le comportement de Mozilla chez moi. :)


 
Ha bon !? Et si tu fais "enregistrer", il te propose quoi comme nom de fichier ?

Reply

Marsh Posté le 30-04-2003 à 15:38:14    

El_gringo a *crit :


 
Ha bon !? Et si tu fais "enregistrer", il te propose quoi comme nom de fichier ?


 
Si c'est le nom de fichier qui pose probleme, il faut quand meme ajouter ca je pense :

Code :
  1. String strContentDisp   = "attachment;filename=" + file.getName ();
  2. _response.setHeader ("Content-Disposition", strContentDisp);


 
Mais en enlevant la partie "attachement". Je pense que ca devrait resoudre le probleme.
 
Moi, je fesais les tests sans passer par php/jsp avec directement des fichiers au type mime inconnu.

Reply

Sujets relatifs:

Leave a Replay

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