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 :

[servlet] FileDownload java


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 83
    Points
    83
    Par défaut [servlet] FileDownload java
    j'ai un problème, j'ai fait un programme qui à partir d'une requête de la servlet doit envoyer un fichier (créer dynamiquement) au client. Le client reçoit un OutputStream en reponse comment faire pour pouvoir réupérer le fichier et l'enregistrer dans un dossier sans que l'utilisateur fasse un "save as".
    Merci.

  2. #2
    Membre habitué
    Avatar de dtateur
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 140
    Points
    140
    Par défaut
    Si je comprends bien ton probleme, tu veux enregistrer un fichiers sur le disque de l'utilisateur sans que le navigateur t'affiche l'invite d'enregistrement du fichier ?


    c'est ça ? :

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par dtateur
    Si je comprends bien ton probleme, tu veux enregistrer un fichiers sur le disque de l'utilisateur sans que le navigateur t'affiche l'invite d'enregistrement du fichier ?


    c'est ça ? :

    Justement c'est ca.

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Re: [servlet] FileDownload java
    Citation Envoyé par salber
    comment faire pour pouvoir réupérer le fichier et l'enregistrer dans un dossier sans que l'utilisateur fasse un "save as".
    Il faut que tu ajoutes un entete http à ta reponse (HttpServletResponse), cet entete est nommé Content-disposition, tu trouveras des exemples sur google.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 83
    Points
    83
    Par défaut Re: [servlet] FileDownload java
    Citation Envoyé par karmelitre
    Citation Envoyé par salber
    comment faire pour pouvoir réupérer le fichier et l'enregistrer dans un dossier sans que l'utilisateur fasse un "save as".
    Il faut que tu ajoutes un entete http à ta reponse (HttpServletResponse), cet entete est nommé Content-disposition, tu trouveras des exemples sur google.
    En effet je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        private void sendSynchroResponse(HttpServletResponse response) throws Exception {
            response.setContentType("application/octet-stream");
            ObjectOutputStream output = new ObjectOutputStream(response.getOutputStream());
            output.writeObject(new File("C:\\Program Files\\vide.zip"));
            output.flush();
            output.close();   
        }
    blablabla

    à la reception je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
              InputStream instr = urlConn.getInputStream();
              ObjectInputStream inputFromServlet = new ObjectInputStream instr);
              vide = (File)inputFromServlet.readObject();
              inputFromServlet.close();
              instr.close();
    Mais ca ne marche pas. Il me renvoie une erreur comme quoi la page est incorrecte.

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Re: [servlet] FileDownload java
    Je ne comprends plus, ton client est un navigateur ou un programme Java ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 83
    Points
    83
    Par défaut Re: [servlet] FileDownload java
    Citation Envoyé par karmelitre
    Je ne comprends plus, ton client est un navigateur ou un programme Java ?
    Je crois que je suis pas très clair, en fait mon client est un client java qui communique avec un servlet en envoyant une requete et attendre un fichier en reponse. Comme c'est pas moi qu est fait le serveur j'ai pas trop le choix je suis obligé de passer par le servlet.
    Mon client est bien un client lourd mais qui envoie des requtes Http au format multipart.

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Re: [servlet] FileDownload java
    Ok, et si j'ai bien saisi, tu desires envoyer le contenu d'un fichier à ton client java. Tu essayes dans la servlet de serialzer l'objet File et de le deserializer dans le client java. Dans ce cas tu essayes d'nevoyer un pointeur et non pas la donnée.

    Voici un petit exemple serveur :

    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
     
            // On ouvre le fichier
            FileInputStream fic = new FileInputStream ("C:\\temp\\tonfic.zip");
            // On le lit completement dans untableau de bits
            byte[] data = new byte[0];
            byte [] buffer = new byte [256];
            int taille;
            while ((taille= fic.read(buffer)) > 0) { // tant qu'il y a quelque chose à lire
                //on alloue un nouveau tableau
                byte [] data2 = new byte[data.length+taille];
                // on recopie dedans les données deja lues
                System.arraycopy(data,0,data2,0,data.length);
                // On recopier dedans les données tout juste lues
                System.arraycopy(buffer,0,data2,data.length,taille);
                // ancien tableau = nouveau tableau
                data = data2;
            }
     
            // definition du mime type du retour
            response.setContentType("application/octet-stream");
            // definition de la taille du retour 
            response.setContentLength(data.length);
            // on ecrit la donnée 
            response.getOutputStream().write(data);
    Et pour le client :
    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
     
            InputStream is = httpConn.getInputStream();
    		// On le lit completement dans un tableau de bits
    		byte[] data = new byte[0];
    		byte [] buffer = new byte [256];
    		int taille;
    		while ((taille= is.read(buffer)) > 0) { // tant qu'il y a quelque chose à lire
    			//on alloue un nouveau tableau
    			byte [] data2 = new byte[data.length+taille];
    			// on recopie dedans les données deja lues
    			System.arraycopy(data,0,data2,0,data.length);
    			// On recopier dedans les données tout juste lues
    			System.arraycopy(buffer,0,data2,data.length,taille);
    			// ancien tableau = nouveau tableau
    			data = data2;
    		}
     
    		// Ensuite tu fait ce que tu veux des données, apr xemple ecrire dans un fichier
    		FileOutputStream fos = new FileOutputStream("C:\\temp\\toto.zip");
    		fos.write(data);
    		fos.flush();
    		fos.close();
    Il y a plus court mais c'est moins evident à comprendre.

    a+

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 83
    Points
    83
    Par défaut Re: [servlet] FileDownload java
    Je viens de tester et ca marche très bien, je te remercie c'est vraiment cool.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/03/2009, 14h30
  2. javax.servlet.ServletException: Java heap space
    Par zakiazaza dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/10/2008, 16h01
  3. servlets et java destribué
    Par saidi_chahrat dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 20/04/2007, 09h45
  4. Flux http sans utiliser de servlet (pb java sous Lotus Notes)
    Par berjaoui dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 08/02/2007, 12h25
  5. servlets et java
    Par hay2006 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 13/12/2006, 19h05

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