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

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Pbr récupération d'un InputStream a partir de lib COS....

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Pbr récupération d'un InputStream a partir de lib COS....

n°190628
Dephi
Posté le 06-08-2002 à 12:00:27  profilanswer
 

:hello:
 
J'ai écris une servlet histoire de pouvoir récupérer un fichier à partir d'un formulaire HTML (et input type="file" )
 
Les librairies COS me permettent de soit uploader ce fichier pour le copier sur mon serveur, soit de récupèrer un InputStream dessus...
C la seconde solution qui m'intéresse pour pouvoir le stocker en BD par la suite..
 
J'utilise de plus la classe ImageInfo pour récupèrer différentes infos comme width, height si le fichier en entrée est une image...
 
 
Voici mon code..
(en rouge, la partie "totalement débile mais qui fait que mon code fonctionne..."  :??:  
 
 

Code :
  1. MultipartParser mParser = new MultipartParser(request, 1024*1024); // 1 Mo maxsize
  2.         Part part = null;
  3.         ParamPart paramPart = null;
  4.         while ((part = mParser.readNextPart()) != null) {
  5.             // rechercher le paramètre de type file
  6.             if (part.isFile()) {
  7.                 InputStream inputStream = ((FilePart)part).getInputStream();
  8.                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
  9.    int n;
  10.    byte[] ch = new byte[1024];
  11.    while((n = inputStream.read(ch,0,1024)) > 0) {
  12.              baos.write(ch,0,n);
  13.    }
  14.          byte[] tab = baos.toByteArray();
  15.          InputStream is = new ByteArrayInputStream(tab);
  16.                 ImageInfo iInfo = new ImageInfo();
  17.                 iInfo.setInput(is);
  18.                 iInfo.setDetermineImageNumber(true);
  19.                 boolean b = iInfo.check();
  20.                 int w = iInfo.getWidth();
  21.                 int h = iInfo.getHeight();
  22.   }
  23.  }


 
 
J'ai grosso-modo fait du copier-coller sur les exemples, ce code devrait donc fonctionner...
 
 
Le pbr est que, si je récupère un InputStream à partir du FilePart et que je l'envoi a ImageInfo, celui ci me dit que ce n'est pas une image valide... (b = false)
Pour que cela fonctionne, je suis obligé de lire le contenu de InputStream, de le copier dans un tableau de bytes et de regénérer un nouvel InputStream a partir de ce tableau de bytes..
C totalement débile mais là, ca fonctionne !!!  :hap:  
 
Quelqu'un pourrait-il m'expliquer please ??
 :jap:  


---------------

mood
Publicité
Posté le 06-08-2002 à 12:00:27  profilanswer
 

n°190634
darklord
You're welcome
Posté le 06-08-2002 à 12:06:44  profilanswer
 

bin c'est simple. Un inputstream c'est quoi? C'est un flux de données qui t'arrive en entrée. Lorsque tu récupères un inputstream tu n'as qu'un "tuyau" vers les données elles meme. Je veux dire que l'inputstream en lui meme ne contient pas les données mais c'est un moyen d'y accéder (et de les copier dans un fichier, sur disque, etc)
 
Il faut voir ce que image info fait mais la solution la plus probable est que la longueur du fichier n'est pas setté au niveau du client. Et donc ce que tu fais dans ce cas là c'est lire jusqu'à ce que tu recoives un évenement de fin de fichier (c'est ce qui apparait parfois qd tu veux télécharger un ficher et que ton browser te met unkown length au lieu de la taille du fichier à descendre).
 
Donc voilà c'est pour ca. Remarque que si tu fais ca depuis un fichier local sur ton disque et que tu passes le stream ca doit fonctionner sans probleme


---------------
Just because you feel good does not make you right
n°190647
Dephi
Posté le 06-08-2002 à 12:21:46  profilanswer
 

Encore une fois  :jap: mister DarkLord..
Merci pour ta réponse ultra-rapide et compréhensible..
 
C vraiment logique quand on lit l'explication..
Encore une fois..  
 :jap:  


---------------

n°190650
darklord
You're welcome
Posté le 06-08-2002 à 12:23:48  profilanswer
 

de rien de rien :)


---------------
Just because you feel good does not make you right

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

  [Java] Pbr récupération d'un InputStream a partir de lib COS....

 

Sujets relatifs
[Java] installation de postgresql avec JDBC[Xerces ?] Parser du HTML en Java
[Jdk1.3.1]Comment obtenir un InputStream sur un StringBuffer [RESOLU]Formule automatique à partir de vba
[java] equivalent d'un tableau de structure mais en java.[Java] Configuration du classpath
[Java] Affichage d'images, je lutte[java] utilisation de timeZone
[java] lire un fichier excell[JAVA/Eclipse] Pb de CLassLoader sous Eclipse [CONTOURNé]
Plus de sujets relatifs à : [Java] Pbr récupération d'un InputStream a partir de lib COS....


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