IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Accéder au contenu d'un fichier via une URL en mode binaire


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Accéder au contenu d'un fichier via une URL en mode binaire
    Bonjour,

    Voilà le pb, je sollicite un script PHP qui me génère un document PDF.
    Je souhaite afficher dans ma page le document PDF généré.

    J'ai uilisé les classes suivantes :
    InputStream,
    ByteArrayInputStream,
    BufferedReader

    mais le contenu du fichier que je récupère ne correspond pas à un doc pdf valide.
    Je voudrais lire le fichier en mode binaire car il y a des pb je pense avec les caractères dont le code ASCII est < à 33 .

    Mais comment fait-on s'il vous plait ????

    Aidez-moi svp, je suis perdue !

    Merci!!

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Août 2005
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 118
    Points : 142
    Points
    142
    Par défaut
    Bonjour,

    Dans java.io tout ce qui est en Reader et Writer est en mode charactère. C'est donc à prosrire puisque les PDF sont des fichiers binaires.

    Pour récuperer tes données, il suffit d'enchainer un BufferedInputStream avec un InputStream.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BufferedInputStream in = new BufferedInputStream(monInputStream)
    Puis pour lire tu peux faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    byte[] b = new byte[1024];
    while(in.available() > 0){
           in.read(b);
          // tu recupères ici tes données dans b
    }
    Ensuite tu les met dans un tableau, un fichier, un OutputStream ou ce que tu veux.

    En espèrant que ça répond à ta question
    A+
    Joris

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Ok je vais essayer
    Merci bcp pur ta réponse !

    Je vais essayer.
    Je pense que cela devrait fonctionner car je vais récupérer des octets par contre je souhaite afficher le doc pdf reçu dans une JSP.

    Penses-tu qu'il faut que je fasse afficher le tableau de bytes reçus non ?

    Merci,

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Penses-tu qu'il faut que je fasse afficher le tableau de bytes reçus non ?
    Tel quel, il faut que ton serveur ait les informations comme quoi le flux envoyé est effectivement du PDF...

    En JSP, je ne sais pas trop comment ca se fait, par contre en servlet, ce n'est pas tres difficile, et la technologie utilisée à la base est la même...

    En servlet, il suffit de faire un truc du genre :

    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
     
    public class PDFServlet extends HttpServlet {
    .....
    .....
    .....
      protected void doGet(HttpServletRequest req,HttpServletResponse res)   throws ServletException, IOException
      {
         res.setContentType("application/pdf");
         res.setContentLength(baos.size());
         ServletOutputStream out = res.getOutputStream();
         baos.writeTo(out);
         out.flush();
      }
     
    }
    Dans un objet implémentant une servlet HTTP... (y'a p'tet un bloc try/catch qui manque...)

    baos étant un ByteArrayOutputStream, dans lequel tu mets la lecture de ton flux PDF...

    Tu dois pouvoir faire quelquechose de similaire en JSP, mais il doit falloir que tu lui indiques de quel type de flux il s'agit, sinon, il risque de t'afficher ton tableau de bytes directement dans une page html... C'est pas tres lisible... Un detail aussi, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res.setContentLength(baos.size());
    est utile, parce que sous certains navigateurs, tu risques d'avoir des problemes pour récupérer ton PDF dans le cas ou tu as un gros flux a envoyer... Il vaut mieux lui signifier la taille avant...

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Août 2005
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 118
    Points : 142
    Points
    142
    Par défaut
    Attention. Dans l'exemple le tableau b ne contiens que 1024 octets. Il faut donc traiter les données au fur et à mesure.
    A mon avis, dans ton cas, tu peux directement utiliser un OutputStream pour optimiser la mémoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    byte[] b = new byte[1024];
    while(in.available() > 0){
           in.read(b);
           out.write(b);  
    }
    Pour le reste, à toi de voir suivent ton appli
    A+
    Joris

Discussions similaires

  1. [PHP 5.0] Upload automatique d'un fichier via une url Php
    Par davelop dans le forum Langage
    Réponses: 1
    Dernier message: 11/12/2010, 12h07
  2. Recuperer un fichier via une URL
    Par kululu dans le forum Général Java
    Réponses: 6
    Dernier message: 12/05/2010, 15h25
  3. ouverture de fichier via une menubar
    Par horkets dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/08/2006, 09h55
  4. [VB6]Lire le contenu d'un fichier dans une listbox
    Par gizmorambo dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 11/04/2006, 12h51
  5. [STRUTS][DOWNLOAD] download d'un fichier via une action
    Par FreshVic dans le forum Struts 1
    Réponses: 3
    Dernier message: 16/04/2004, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo