[SERVLET][JSP] Ecriture de fichier par la servlet
Bonjour,
J'ai un léger problème avec une de mes servlets qui ecrit plusieurs fichiers (png et svg entre autre).
Les fichiers sont créés dans le /bin du serveur Jboss (je ne sais pas comment lui dire de les créer ailleurs..)
Par la suite, j'ai besoin que mes JSP puissent accéder à ces fichiers pour notamment les afficher dans des tag <img>...etc...
Au niveau de l'appli, on utilise donc des Servlet, des JSP, le tout sous du Struts.
voici un bout de code pour la création des fichiers :
Code:
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
| File f = new File("pos.svg");
StreamResult result= new StreamResult(f);
DOMSource source =new DOMSource(svgDocument);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.transform(source,result);
//creation du png
//crée un transcoder PNG
PNGTranscoder t = new PNGTranscoder();
//crée l'entrée transcoder
String svgURI = f.toURL().toString();
TranscoderInput input = new TranscoderInput(svgURI);
//crée la sortie transcoder
OutputStream ostream = new FileOutputStream("pos.png");
TranscoderOutput output = new TranscoderOutput(ostream);
//sauvegarde image
t.transcode(input,output);
//vide et ferme le flux
ostream.flush();
ostream.close(); |
Ma question est comment lui indiquer d'ecrire les fichiers ailleurs (dans le tmp/deploy/... par exemple ? et comment les faire afficher dans la JSP ?
Merci beaucoup
Jab
Re: [SERVLET][JSP] Ecriture de fichier par la servlet
Tes fichiers sont créés dans le repertoire bin/ parce que le constructeur new File("myfile") va creer le fichier dans le repertoire courant (a savoir celui qui contient le fichier "run", donc bin/).
Pour créer tes fichiers dans un autre repertoire, il suffit d'indiquer le path complet dans le constructeur.
Comment ?
- si tu veux le creer dans le repertoire tmp/ de JBoss, tu peux regarder la valeur de la variable java.io.tmpdir. Elle est utilisée par Tomcat pour stocker le path de son repertoire tmp, esperons que JBoss en fait de meme. Par contre, cette solution ne te permet pas de retouver facilement tes fichiers depuis les JSP.
- une autre solution est de creer ces fichiers dans le contexte de ton application. La commande suivante te permet d'obtenir depuis une servlet le path absolu d'un repertoire "images" situé a la racine de ton appli :
Code:
1 2
|
String dir = httpRequest.getSession().getServletContext().getRealPath("/images"); |
Tu peux ensuite creer ton fichier :
Code:
File file = new File("myfile", dir);
et l'afficher dans ta JSP avec un simple <img src="images/myfile"...>