Télécharger un ficher
Fermé
mlotfi2
Messages postés
12
Date d'inscription
mardi 3 juin 2014
Statut
Membre
Dernière intervention
5 décembre 2014
-
19 juin 2014 à 14:05
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 19 juin 2014 à 19:26
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 19 juin 2014 à 19:26
A voir également:
- Télécharger un ficher
- Comment télécharger une vidéo youtube - Guide
- Telecharger whatsapp pour pc - Télécharger - Messagerie
- Télécharger un podcast - Guide
- Telecharger ccleaner gratuit - Télécharger - Nettoyage
- Télécharger musique gratuitement sur pc - Télécharger - Conversion & Extraction
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
19 juin 2014 à 19:26
19 juin 2014 à 19:26
Bonjour,
Tu as fait, un buf.toString(), or buf est un byte[] ça ne fera pas du tout ce que tu veux.
On pourrait éventuellement faire un new String(buf); mais dans ton cas tu manipules des données binaires (une image), donc la convertir en texte n'a pas beaucoup de sens, et pourrait entraîner des problèmes d'encodage inutiles.
Ta lecture de ton fichier est fausse aussi, je ne sais pas exactement ce que tu as voulu faire avec ton offset, mais comme tu l'as fait, la lecture de ton fichier ne pourra être stocké que dans ton buffer, et sera donc limité à ses 1024 octets, alors qu'une image peut-être bien plus grandes.
Dans tous les cas il vaudrait mieux passer directement de ton InputStream vers le OutputStream de la réponse, ça évite des manipulations inutiles.
Tu as fait, un buf.toString(), or buf est un byte[] ça ne fera pas du tout ce que tu veux.
byte[] buf = new byte[1024]; String str = buf.toString(); System.out.println(str); // [B@13579bdf
On pourrait éventuellement faire un new String(buf); mais dans ton cas tu manipules des données binaires (une image), donc la convertir en texte n'a pas beaucoup de sens, et pourrait entraîner des problèmes d'encodage inutiles.
Ta lecture de ton fichier est fausse aussi, je ne sais pas exactement ce que tu as voulu faire avec ton offset, mais comme tu l'as fait, la lecture de ton fichier ne pourra être stocké que dans ton buffer, et sera donc limité à ses 1024 octets, alors qu'une image peut-être bien plus grandes.
Dans tous les cas il vaudrait mieux passer directement de ton InputStream vers le OutputStream de la réponse, ça évite des manipulations inutiles.
public void download(String chemin) throws IOException { HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); response.setContentType("image/png"); response.setHeader("Content-Disposition", "attachment;filename=instructions.png"); byte[] buf = new byte[1024]; InputStream in = new FileInputStream(chemin); OutputStream out = response.getOutputStream(); int len; while ((len = in.read(buf)) != -1) out.write(buf, 0, len); in.close(); FacesContext.getCurrentInstance().responseComplete(); }