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

Servlets/JSP Java Discussion :

probleme d'ouverture d'un fichier


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut probleme d'ouverture d'un fichier
    salut,

    je veux savoir comment ouvrir un fichier

    j'ai une page jsp qui contient un bouton : "consulter"

    quand je clique sur ce bouton je dois faire appel à une methode qui dois ouvrir mon fichier

    en fait j'ai le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     byte[] file=  c.execute(connector , doc);
    la methode execute retourne un fichier de type byte[]

    suite à recherche sur le net je trouve une class servlet qui a le code suivant


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class WelcomeServlet extends HttpServlet {
     
        private static final String DOCUMENT_LOCATION = "H:\\testPDF.pdf"; // a test pdf on my PC
     
        @Override
        public void init(ServletConfig config) throws ServletException {
            super.init(config);
        }
     
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
            // set some response headers
            response.setHeader("Expires", "0");
            response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
            response.setHeader("Pragma", "public");
            response.setContentType("application/pdf");
     
            InputStream in = new FileInputStream(DOCUMENT_LOCATION);
            OutputStream out = response.getOutputStream();
     
            // Copy the bits from instream to outstream
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
               out.write(buf, 0, len);
            }
            in.close();
     
        }
    }

    mais cette class a comme donnée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private static final String DOCUMENT_LOCATION = "H:\\testPDF.pdf"; // a test pdf on my PC
    mais donc mon cas j'ai seulement un fichier de type byte qui est retournée par la fonction execute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     byte[] file=  c.execute(connector , doc);


    merci d'avance

  2. #2
    Membre actif Avatar de hbennou
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 162
    Points : 205
    Points
    205
    Par défaut
    Je n'ai pas vu de rapport entre ta question et les bouts de codes que t'as mis. En tous les cas pour ouvrir un fichier avec java tu peux utiliser l'API Desktop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Desktop desk = Desktop.getDesktop();
    desk.open(new File("nom.txt"));

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    en fait j'ai comme retour d'une fonction ce type byte[]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     byte[] is =  c.execute(connector , doc);

    et je veux ouvrir ce fichier


    j'ai essayer avec ce 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
     
     
    public class Test{
     
    	private HttpServletRequest request;
    	  private HttpServletResponse response;
     
    public void consult() {
     
            P8Connector connector = new P8Connector(TypeEnum.CE.value(),
                    "test");
     
     
            GetDocumentsListInFolder getDocumentsListInFolder = new GetDocumentsListInFolder();
            List<Document> list = new ArrayList<Document>();
     
            list = getDocumentsListInFolder.execute(connector,
                    "/test", "1");
     
     
            for (int i = 0; i < list.size(); i++) {
                Document doc = (Document)list.get(i);
                GetDocumentContent c = new GetDocumentContent();
               byte[] is =  c.execute(connector , doc); 
     
     
       response.setHeader("Expires", "0");
          response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
             response.setHeader("Pragma", "public");
              response.setContentType("application/pdf");
               InputStream in = new FileInputStream("20130114.008.01.pdf");
               OutputStream out = response.getOutputStream();
     
               // Copy the bits from instream to outstream
               byte[] buf = new byte[1024];
               int len;
               while ((len = in.read(buf)) > 0) {
                  out.write(buf, 0, len);
               }
               in.close();
     
    }
     public void setServletRequest(HttpServletRequest request){
    		  this.request = request;
    		  }
     
    		  public HttpServletRequest getServletRequest(){
    		  return request;
    		  }
     
    		  public void setServletResponse(HttpServletResponse response){
    		  this.response = response;
    		  }
     
    		  public HttpServletResponse getServletResponse(){
    		  return response;
    		  }
     
    }

    mais lors de test :

    j'ai l'erreur null point exception au niveau de cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       response.setHeader("Expires", "0");

  4. #4
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,

    comme l'a dit hbennou, tu n'es pas très très clair sur le fond de ton problème.
    Et si c'est seulement ton NullPointerException, alors c'est plutôt clair : faut vérifier pourquoi la variable correspondante est nulle et l'initialiser comme il le faut avant de l'utiliser ...

    Cordialement,

  5. #5
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    je veux juste savoir est il possible d'ouvrir un document sachant que j'ai seulement ce retour suite à l’exécution de cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     c.execute(connector , doc);

    si non est ce que ces données sont nécessaires ou non pour ouvrir un document

    ou bien le premier retour est suffisant pour ouvrir un fichier (byte[])

    content type,fileName,content Size

  6. #6
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,

    tu peux utiliser le ByteArrayInputStream pour avoir un InputStream

    Ensuite, je ne sais pas trop ce que tu veux faire, mais voilà une façon d'avoir un InputStream

    Cordialement,

Discussions similaires

  1. [XL-2010] Probleme d'ouverture d'un fichier XL telecharge sur un site internet
    Par bundy_al01 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/12/2010, 13h59
  2. probleme d'ouverture d'un fichier excel
    Par jojolastar27 dans le forum C++Builder
    Réponses: 12
    Dernier message: 19/05/2009, 15h49
  3. Probleme d'ouverture d'un fichier suite à install vista
    Par pronolovic dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 06/02/2007, 08h17
  4. [Debutant][VB.net] Probleme d'ouverture d'une fichier excel
    Par Tatouine dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/06/2006, 13h42
  5. [VC.Net++] Probleme d'ouverture d'un fichier ini !
    Par jlassira dans le forum VC++ .NET
    Réponses: 9
    Dernier message: 03/02/2006, 12h57

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