Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
698 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Affichage d'une image qui ne ressemble à rien

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Affichage d'une image qui ne ressemble à rien

n°1216294
mac soke
Posté le 06-10-2005 à 10:48:56  profilanswer
 

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 :
  1. <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 :
  1. PrintWriter out = resp.getWriter();
  2. FileReader in = new FileReader("c:\\Temp\\" + req.getParameter("f" ));
  3. int c;
  4. char[] buffer = new char[1];
  5. while ((c = in.read(buffer)) != -1)
  6.         out.write(buffer);
  7. 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 :
  1. PrintWriter out = resp.getWriter();
  2. FileReader file = new FileReader("c:\\Temp\\" + req.getParameter("f" ));
  3. BufferedReader in = new BufferedReader(file);
  4. char[] buf = new char[512*1024];
  5. int charsRead;
  6. while ((charsRead = in.read(buf)) != -1)
  7.         out.write(buf, 0, charsRead);


Code :
  1. PrintWriter out = resp.getWriter();
  2. BufferedReader in = new BufferedReader(new FileReader("c:\\Temp\\" + req.getParameter("f" )));
  3. String strTmp;
  4. StringBuffer strBuffer = new StringBuffer();
  5. while((strTmp = in.readLine()) != null)
  6.        strBuffer.append(strTmp);
  7. out.print(strBuffer.toString());
  8. in.close();


Code :
  1. PrintWriter out = resp.getWriter();
  2. BufferedReader in = new BufferedReader(new FileReader(fichier));
  3. char[] buf = new char[512*1024];  // 512K char buffer
  4. int charsRead;
  5. while ((charsRead = in.read(buf)) != -1)
  6.         out.write(buf, 0, charsRead);
  7. in.close();


J'ai aussi essayé sans faire appel à l'image via une balise <IMG> mais en faisant :

Code :
  1. <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
mood
Publicité
Posté le 06-10-2005 à 10:48:56  profilanswer
 

n°1216395
mac soke
Posté le 06-10-2005 à 11:46:14  profilanswer
 

C'est bon, j'ai trouvé mon bonheur :

Code :
  1. import java.io.*;
  2. import java.util.*;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. import com.oreilly.servlet.ServletUtils;
  6. public class ViewFile extends HttpServlet {
  7.   public void doGet(HttpServletRequest req, HttpServletResponse res)
  8.                                throws ServletException, IOException {
  9.     // Use a ServletOutputStream because we may pass binary information
  10.     ServletOutputStream out = res.getOutputStream();
  11.     // Get the file to view
  12.     String file = req.getPathTranslated();
  13.     // No file, nothing to view
  14.     if (file == null) {
  15.       out.println("No file to view" );
  16.       return;
  17.     }
  18.     // Get and set the type of the file
  19.     String contentType = getServletContext().getMimeType(file);
  20.     res.setContentType(contentType);
  21.     // Return the file
  22.     try {
  23.       returnFile(file, out);
  24.     }
  25.     catch (FileNotFoundException e) {
  26.       out.println("File not found" );
  27.     }
  28.     catch (IOException e) {
  29.       out.println("Problem sending file: " + e.getMessage());
  30.     }
  31.   }
  32. // Send the contents of the file to the output stream
  33. public static void returnFile(String filename, OutputStream out)
  34.                            throws FileNotFoundException, IOException {
  35.   // A FileInputStream is for bytes
  36.   FileInputStream fis = null;
  37.   try {
  38.     fis = new FileInputStream(filename);
  39.     byte[] buf = new byte[4 * 1024];  // 4K buffer
  40.     int bytesRead;
  41.     while ((bytesRead = fis.read(buf)) != -1) {
  42.       out.write(buf, 0, bytesRead);
  43.     }
  44.   }
  45.   finally {
  46.     if (fis != null) fis.close();
  47.   }
  48. }
  49. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Affichage d'une image qui ne ressemble à rien

 

Sujets relatifs
[CSS] Affichage 2 images en même temps ?CSS : caler une image de fond sur un texte centré.
Script de randomisation d'affichage d'une imageaffichage d'une partie d'un fetch array..
Pb lecture d'une image après uploadAfficher une image dans un email
Comment mettre image fond écran sous-pages site ?envoyer image de userfrom vers feuille de calcul
Problème pour centrer une image chargée dynamiquement 
Plus de sujets relatifs à : Affichage d'une image qui ne ressemble à rien


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR