Web : Envoyer un document non HTML

Web : Envoyer un document non HTML - Java - Programmation

Marsh Posté le 24-02-2004 à 17:52:49    

Hello :hello:  
Donc, j'ai une page qui propose des documents à l'utilisateur.
Ces documents peuvent être de différents types (text, word, pdf...).
Je connais bien sûr le content-type de mes documents.
 
Le problème, c'est que les documents ne sont pas sur disque, mais dans des blobs ( C'est pas mon choix :( ).
 
L'url va donc être un truc du genre:
http://www.monserveur.com/applicat [...] p?docId=27
 
La question est donc : comment écrire getDocument.jsp pour que le content-type soit celui du document ?
 
Typiquement, si mon document était du HTML ça se passerait comme ça :
 

Code :
  1. <jsp:useBean id="x" scope="session" class="org.chezwam.DocumentServer" />
  2. <% response.getWriter().print( x.getDocument( request ) ); %>


 
Remarques :
1- Oui, j'y connais rien ou presque en JSP :D
2- Non, j'ai pas cherché :whistle:
 
Mais bon ma question est tellement bien posée :sol:  que ça mérite une réponse non ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 24-02-2004 à 17:52:49   

Reply

Marsh Posté le 24-02-2004 à 18:05:18    

Pour ce genre de besoin, fait une servlet plutot qu'une JSP.
Tu écris directement dans le flux de la réponse.
Et utilise le OutputStream plutot que le Writer ...
 
Pour mettre le bon contentType, tu te sers de la methode response.setContentType().


Message édité par benou le 24-02-2004 à 18:09:07

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-02-2004 à 18:48:56    

merci :jap:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 24-02-2004 à 20:34:24    

de rien collègue ;)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-02-2004 à 15:57:47    

J'ai une autre question à propos du content-type.
Y'a t-il une méthode simple et fiable en Java 1.3 de déterminer le content-type d'un fichier.
Pour le moment, on utilise le content-type fournis pas le client, mais j'aime pas trop ça, même si ce n'est utilisé que dans l'interface d'admin.
 
Les miroirs : 4111 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 25-02-2004 à 16:08:50    

ben tu peux pas ... le content type c'est justement pour donner la nature d'un fichier binaire...
 
Il y a des "mappings" habituels en fonction de l'extension du fichier ( htm -->  text/html, gif --> image/gif, etc ...)
 
Donc c'est pas vraiment un problème java mais plutot un problème de convention et de configuration ...
 
Dans un environnement servlet, tu peux utiliser les mapping extension<-->contentType décris dans le fichier de déploiement (ca fait partit de la spécification servlet) en utilisant la méthode ServletContext.getMimeType().
Mais bon, pour que ca marche il faut que tu aies l'extension du fichier ... je sais pas si dans ton cas tu l'as ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-02-2004 à 16:12:46    

Mara's dad a écrit :


Les miroirs : 4111 !


c'est ton tel ? je te trouve pas dans l'annuaire à ce numéro :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-02-2004 à 16:29:52    

benou a écrit :


c'est ton tel ? je te trouve pas dans l'annuaire à ce numéro :/


T'as un annuaire trop vieux !
Akitel II version 1.0  Base version :09/01/2004.
 
Sinon, pour le content-type, il me semble que des gens ont développé des bases de signatures qui permettent de déterminer le content-type à partir du contenu au lieu de la simple extention du fichier.
 
Genre ce que Joce à du faire pour ne pas prendre un .gif qui en fait contient un fichier flash...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 25-02-2004 à 16:37:35    

Mara's dad a écrit :


T'as un annuaire trop vieux !
Akitel II version 1.0  Base version :09/01/2004.


 
ouais :/
 
j'ai pu mon mot de passe source pour pouvoir télécharger la nouvelle version :/
 
edit : 22/10/2001  :sweat:  
 
 

Mara's dad a écrit :


Sinon, pour le content-type, il me semble que des gens ont développé des bases de signatures qui permettent de déterminer le content-type à partir du contenu au lieu de la simple extention du fichier.
 
Genre ce que Joce à du faire pour ne pas prendre un .gif qui en fait contient un fichier flash...


ca ca peut marcher pour quelques fichiers : dans le cas du GIF, y a un header : les 3 premier caracteres sont GIF.  
 
Mais bon, en plus d'être extremement peu performant (ouvrir le fichier, tester les headers des formats de fichiers les plus connus), y a des format de fichiers pour lesquels ca marche pas. ex : un fichier texte :/


Message édité par benou le 25-02-2004 à 19:45:42

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-02-2004 à 18:55:52    

Mara's dad a écrit :


Sinon, pour le content-type, il me semble que des gens ont développé des bases de signatures qui permettent de déterminer le content-type à partir du contenu au lieu de la simple extention du fichier.
 
Genre ce que Joce à du faire pour ne pas prendre un .gif qui en fait contient un fichier flash...

oui enfin joce à pris le machin de php qui fait ça tout seul :o
sinon oui j'allais dire qu'il existait peut etre une lib pour faire ça en java... mais bon c ptet un peu lourd pour pas gd chose... va voir du coté de ce que t'as dit benou.
 
 
(sinon je suis aussi passé par le "matter les 4 premiers bytes et si c'est escape-P-N-G c'est bon [:chacal_one333])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-02-2004 à 18:55:52   

Reply

Marsh Posté le 26-02-2004 à 11:28:38    

J'ai cherché un lib qui ferait ça et j'ai pas trouvé.
 
Je ne vois pas trop pourquoi ce serait si lourd.
La lib qui gère le file upload, il n'est pas obligé "d'ouvrir", le fichier, les octets il les voit passer sous son nez.
 
M'enfin, je suis quand même pas le seul à avoir ce genre de besoin !
 
Et même si c'est lourd, c'est un traitement qui n'est fait que dans le cardre d'un upload de fichier. C'est à dire sur une opération assez rare par rapport au trafic général d'un site. Mais c'est tellement sensible qu'il me semble important qu'on s'y attarde un peu non ?
Je suis le seul parano içi ou quoi :D
 
En fait pour alléger le truc, il suffit de valider le content-type fourni, c'est à dire de faire un test "simple". Il ne s'agit pas de déterminer à l'aveugle le type d'un fichier.
 
Allez, si je ne trouve pas, je lance un nouveau projet, le : ContentTypeValidator !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

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