2010-07-07 5 views
1

J'ai actuellement un portlet avec un explorateur de fichiers et un volet vide. Lorsque l'utilisateur choisit d'ouvrir un fichier image, je voudrais afficher l'image dans le volet. Cependant, l'image existe dans/home/myUser/images/et le portlet existe dans /home/server/tomcat/tomcat-6.0.18/webapps/mycompany. Il est placé là en déployant à chaud un portlet via Liferay. Fondamentalement, dans le code, je veux être capable de générer du HTML pour afficher cette image. Cependant, je sais que je peux juste direAffichage des images dans le portlet Tomcat

<img src='/home/myUser/images/test.jpg'/> 

à partir de mon portlet. J'ai donc pensé à le copier dans le répertoire tomcat-6.0.18/temp en utilisant la méthode File.createTempFile. J'ai réussi à copier le fichier là-bas, et il est là. Cependant, quand je dis maintenant

<img src='/home/server/tomcat/tomcat-6.0.18/temp/test.jpg'/> 

Je ne peux toujours pas l'afficher! Note: le texte ci-dessus vient de:

File tempImage = File.createTempFile("",""); 
FileReader in = new FileReader(myImageFile); 
FileWriter out = new FileWriter(tempImage); 
int c; 

while ((c = in.read()) != -1) 
    out.write(c); 

in.close(); 
out.close(); 
String myHtmlString = "<img src='" + tempImage.getAbsolutePath() + "'/>"; 

S'il vous plaît être détaillé dans comment je peux résoudre ce problème!

Merci!

EDIT: J'ai rencontré des trucs sur une servlet d'image? Des idées?

Répondre

0

Le chemin d'accès à l'image doit être accessible par le Web. L'utilisation File#createTempFile va enregistrer l'image dans un endroit accessible non Web comme:

/var/cache/tomcat6/smiley.png

Essayez ceci:

String smiley = "smiley.png"; 
String smileyPath = getServletContext().getRealPath(smiley) 

Maintenant, enregistrez-le smileyPath. Ce sera l'écrire sur un chemin comme /usr/share/tomcat6/webapps/<your-web-app>/smiley.png

Puis dans votre code HTML que vous pouvez référencer l'image comme:

String html = "<img src='" + smiley + "'/>"