Bonjour à tous,
Je dois récupérer une image sur un serveur par une servlet chargée de l'afficher dans un navigateur. Je procède donc de la manière suivante :
Appel dans la JSP de la servlet avec le nom de l'image en paramètre "f" :
Code :
- <p><img src="ImageDownload?f=1128437850272.jpg"></p>
|
Code de la fonction doGet() de la servlet ImageDownload. Le principe est de lire l'image source et d'afficher au fur et à mesure les caractères lus :
Code :
- PrintWriter out = resp.getWriter();
- FileReader in = new FileReader("c:\\Temp\\" + req.getParameter("f" ));
- int c;
- char[] buffer = new char[1];
- while ((c = in.read(buffer)) != -1)
- out.write(buffer);
- out.close();
|
Seulement, au mieux l'image affichée ressemble plus à de l'art abstrait qu'à l'originale, au pire elle ne s'affiche pas.
J'ai également essayé les codes suivants mais le résultat est soit identique, soit pire (aucune image ne s'affiche) :
Code :
- PrintWriter out = resp.getWriter();
- FileReader file = new FileReader("c:\\Temp\\" + req.getParameter("f" ));
- BufferedReader in = new BufferedReader(file);
- char[] buf = new char[512*1024];
- int charsRead;
- while ((charsRead = in.read(buf)) != -1)
- out.write(buf, 0, charsRead);
|
Code :
- PrintWriter out = resp.getWriter();
- BufferedReader in = new BufferedReader(new FileReader("c:\\Temp\\" + req.getParameter("f" )));
- String strTmp;
- StringBuffer strBuffer = new StringBuffer();
- while((strTmp = in.readLine()) != null)
- strBuffer.append(strTmp);
- out.print(strBuffer.toString());
- in.close();
|
Code :
- PrintWriter out = resp.getWriter();
- BufferedReader in = new BufferedReader(new FileReader(fichier));
- char[] buf = new char[512*1024]; // 512K char buffer
- int charsRead;
- while ((charsRead = in.read(buf)) != -1)
- out.write(buf, 0, charsRead);
- in.close();
|
J'ai aussi essayé sans faire appel à l'image via une balise <IMG> mais en faisant :
Code :
- <jsp:include page="<%= request.getContextPath() %>/ImageDownload"><param name="f" value="1128437850272.jpg"></jsp:include>
|
Les résultats sont similaires. Je ne comprends plus, ça fait une journée que je suis dessus. Pouvez-vous m'aider ?
Merci d'avance,
@+
Mac Soke
PS : J'utilise un serveur Tomcat 4 en local sous Windows XP et je développe avec WSAD.
Message édité par mac soke le 06-10-2005 à 10:52:22