Bonjour,

je cherche à créer une servlet devant charger une image dans un tableau de byte, configurer le type de contenu pour une image, configurer l'entête content-length (le nombre de byte dans le tableau) et envoyer l'image dans la réponse au client.

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Picture extends HttpServlet {
  public void doPost(HttpServletRequest request,
  					 HttpServletResponse response)
  {
    String picturefile = request.getParameter("picturefile");
    File f = new File("C:\\Documents and Settings\\Sébastien\\Mes documents\\Photos\\Japon\\Tokyo\\" + picturefile);
    FileInputStream fis = new FileInputStream(f);
    ByteArrayOutputStream boss = new ByteArrayOutputStream();
    byte[] tabb = new byte [f.length()];
    fis.read(tabb);
    try {
	  response.setContentType("image/jpeg");
	  OutputStream o = response.getOutputStream();
	  o.write(tabb);
	  o.flush();
      o.close();
	} catch (Exception e) {
	  e.printStackTrace();
	}
  }
}
Je n'ai pas précisé l'entête content-length, car je n'ai pas trouvé d'exemple l'utilisant.
Cependant lorsque je compile j'ai un message d'erreur:

Picture.java:14: possible loss of precision
found : long
required : int
byte[] tabb = new byte [f.length()];
^
1 error
J'ai essayé de corriger l'erreur en utilisant un cast : (int) f.length(); mais cela ne fonctionne pas.
Je ne vois pas trop ce que je peux faire, si vous avez une piste je suis preneur.

Merci d'avance, mumu27!