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

Entrée/Sortie Java Discussion :

java web, télécharger un ZipOutputStream


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Par défaut java web, télécharger un ZipOutputStream
    Bonjour tout le monde.

    je recupère des fichiers sur un serveur, je les zip, maintenant j'aimerai bien pouvoir les télecharger. Je ne vois pas comment compléter mon code

    Si l'un de vous a une idée, je suis preneur, merci.

    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
     
    	    // These are the files to include in the ZIP file
    	    List<String> filenames = down.getFilenames();
    	    List<String> urls = down.getUrls();
     
    	    // Create a buffer for reading the files
    	    byte[] buf = new byte[1024];
     
    	    try {
    	    	HttpClient client = new HttpClient();
    			byte[] outputByteArray;
    			// set default retry handler
    			client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    					new DefaultHttpMethodRetryHandler());
     
    	        // Create the ZIP file
    	        String outFilename = "outfile.zip";
    	        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
     
    	        // Compress the files
    	        for (int i=0; i<filenames.size(); i++) {
     
    	        	//make an HTTP GET
    	    		HttpMethod method = new GetMethod(urls.get(i));
    	    		client.executeMethod(method);
     
    	    		//get bytes
    	    		outputByteArray = method.getResponseBody();
     
     
    	            // Add ZIP entry to output stream.
    	            out.putNextEntry(new ZipEntry(filenames.get(i)));
     
    	            // Transfer bytes from the file to the ZIP file
    	            out.write(outputByteArray);
     
     
    	            // Complete the entry
    	            out.closeEntry();
    	        }
     
    	        // Complete the ZIP file
    	        out.close();
     
     
    	        //Download hte ZIP file
    	        response.setContentType( "application/octet-stream" );
    	        response.setHeader( "Content-Disposition", "attachment; filename=\""+outFilename+"\"" );
     
    	        ServletOutputStream op = response.getOutputStream();
     
    	        // ???????????

  2. #2
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Par défaut
    le probleme evolue mais n'est pas resolu: maintenant j'arrive a envoyer le zip sur la sortie mais apparement il n'est pas conforme car ni windows ni 7zip ne peuvent l'ouvrir. De plus on dirait qu'il n'a pris que le premier fichier. Voyez vous un probleme dans mon 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
     
    // These are the files to include in the ZIP file
    	    List<String> filenames = down.getFilenames();
    	    List<String> urls = down.getUrls();
     
     
    	    try {
    	    	HttpClient client = new HttpClient();
    			byte[] outputByteArray;
    			// set default retry handler
     
    			client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    					new DefaultHttpMethodRetryHandler());
     
    	        // Create the ZIP file
    	        String outFilename = "outfile.zip";
    	        ByteArrayOutputStream bout=new ByteArrayOutputStream();
    	        ZipOutputStream out = new ZipOutputStream(bout);
     
    	        // Compress the files
    	        for (int i=0; i<filenames.size(); i++) {
     
    	        	//make an HTTP GET
    	    		HttpMethod method = new GetMethod(urls.get(i));
    	    		client.executeMethod(method);
     
    	    		//get bytes
    	    		outputByteArray = method.getResponseBody();
     
     
    	            // Add ZIP entry to output stream.
    	            out.putNextEntry(new ZipEntry(filenames.get(i)));
     
    	            // Transfer bytes from the file to the ZIP file
    	            out.write(outputByteArray);
     
     
    	            // Complete the entry
    	            out.closeEntry();
    	        }
    	        out.finish();
    	        out.close();
    	        String zip=bout.toString();
     
    	        response.setContentType( "application/zip" );
    	        response.setHeader( "Content-Disposition", "attachment; filename=\""+outFilename+"\"" );
     
    	        ServletOutputStream op = response.getOutputStream();
    	        op.println(zip);
    	        op.flush();
     
     
     
    	    } catch (IOException e) {
    	        ...

  3. #3
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Par défaut
    Precision:
    je viens d'ouvrir le zip generer avec notepad, c'est l'envoie sur la sortie qui plante.
    Le toString() n'envoie pas les données mais le type de l'objet.
    Donc le fichier generer est un fichier texte avec BufferedInputStream.

    Le probleme est donc:
    passer les données de out ou buff à op

Discussions similaires

  1. questions générales sur Java Web Start
    Par Shiryu44 dans le forum JWS
    Réponses: 12
    Dernier message: 11/04/2005, 15h33
  2. Exception sur Java Web Start
    Par Le Bressan dans le forum JWS
    Réponses: 5
    Dernier message: 01/02/2005, 10h52
  3. [Info]Développement Java Web Start
    Par szdavid dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 26/01/2005, 16h59
  4. java web start qui veut pas se lancer
    Par calvin dans le forum JWS
    Réponses: 4
    Dernier message: 30/06/2004, 11h42
  5. [JNDI] Equivalent avec Java Web Start ?
    Par cameleon2002 dans le forum Java EE
    Réponses: 8
    Dernier message: 18/09/2003, 18h55

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