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

Langage Java Discussion :

Problème de zip


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Par défaut Problème de zip
    Bonjours,
    Mon programme fonctionne de la manière suivante : mon application java fait appel à une page php qui crée un fichier zip à partir de plusieurs fichiers et le retourne. Mon application récupère alors ce fichier, l'enregistre mais lorsque je souhaite l'ouvrir dans mon code java avec un "new ZipFile("test.zip");", cela provoque une erreur alors que je peux ouvrir mon fichier en dehors de java sans souci.

    (J'utilise la librairie HTTPClient...)

    Voici le code de mon application java :
    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
    import org.apache.commons.httpclient.*;
    import org.apache.commons.httpclient.methods.*;
    import org.apache.commons.httpclient.params.HttpMethodParams;
    import java.util.zip.*;
     
    import java.io.*;
     
    public class HTTPTest {
     
        private static String url = "http://128.1.2.11/test.php";
     
        public static void main(String[] args) {
    	// Create an instance of HttpClient
    	HttpClient client = new HttpClient();
     
    	// Create a method instance.
    	GetMethod method = new GetMethod(url);
     
    	// Provide custom retry handler is necessary
    	method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
    		new DefaultHttpMethodRetryHandler(3, false));
     
    	try {
    	    // Execute the method.
    	    int statusCode = client.executeMethod(method);
     
    	    if (statusCode != HttpStatus.SC_OK) {
    		System.err.println("Method failed: " + method.getStatusLine());
    	    }
     
    	    // Read the response body.
    	    InputStream responseBody = method.getResponseBodyAsStream();
     
    	    // Deal with the response.
    	    FileOutputStream writenFile = new FileOutputStream("test.zip");
    	    byte [] test = new byte[1024];
    	    while (responseBody.read(test) > 0) {
    		writenFile.write(test);
    	    }
     
    	    ZipFile zipfile = new ZipFile("test.zip");
     
    	} catch (HttpException e) {
    	    System.err.println("Fatal protocol violation: " + e.getMessage());
    	    e.printStackTrace();
    	} catch (IOException e) {
    	    System.err.println("Fatal transport error: " + e.getMessage());
    	    e.printStackTrace();
    	} finally {
    	    // Release the connection.
    	    method.releaseConnection();
    	}  
        }
    }
    Mon fichier test.php :
    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
    <?php
        // appel de la classe
        require_once('zip.lib.php');
        // nom des fichiers à ajouter dans l'archive
        $filename = 'test.sql';
        $filename2 = 'test.txt';
     
        // contenu du fichier
        $fp = fopen ($filename, 'r');
        $content = fread($fp, filesize($filename));
        fclose ($fp);
     
        // contenu du fichier
        $fp2 = fopen ($filename2, 'r');
        $content2 = fread($fp2, filesize($filename2));
        fclose ($fp2);
     
        // création d'un objet 'zipfile'
        $zip = new zipfile();
        // ajout des fichiers dans cet objet
        $zip->addfile($content, $filename);
        $zip->addfile($content2, $filename2);
        // production de l'archive' Zip
        $archive = $zip->file();
     
        // entêtes HTTP
        header('Content-Type: application/x-zip');
        // force le téléchargement
        header('Content-Disposition: inline; filename=archive.zip');
     
        // envoi du fichier au navigateur
        echo $archive;
    ?>
    Et mon erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Fatal transport error: error in opening zip file
    java.util.zip.ZipException: error in opening zip file
    	at java.util.zip.ZipFile.open(Native Method)
    	at java.util.zip.ZipFile.<init>(Unknown Source)
    	at java.util.zip.ZipFile.<init>(Unknown Source)
    	at test.HTTPTest.main(HTTPTest.java:43)
    Quelqu'un saurait-il résoudre mon problème ?

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu peux essayer de rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    writenFile.flush();
    writenFile.close();
    avant d'ouvrir le zip ?

  3. #3
    Membre expérimenté Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Par défaut
    Oups j'avais pas fermé... Mais ça change pas grand chose malheureusement...

    Avec un fichier zip normal, il n'y a pas de problème...

    Sinon j'ai remarqué que si les fichiers à transférer étaient trop gros, le fichier zip créé est défectueux (mais pas si je le télécharge via un navigateur...).

    Donc mon problème doit venir de la récupération et l'écriture du fichier, mais où exactement...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 73
    Par défaut
    Ton fichier test.zip existe à l'endroit ou tu éxécutes ton code ??

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben vu qu'il le crée juste avant à priori oui ...

  6. #6
    Membre expérimenté Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Par défaut
    Oui en toute logique il est crée.
    Si j'execute mon code sans recharger le fichier zip j'ai le même problème donc il doit être créé même si c'est pas correctement...

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Et tu dis que si tu l'exécutes et que tu t'arretes juste après l'écriture du fichier, le fichier n'est pas lisible non plus par un programme standard type winzip ?

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

Discussions similaires

  1. problème java + zip : décompression impossible
    Par Papipen dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 09/04/2015, 16h31
  2. problème création ZIP avec DotNetZip
    Par Lenn0x dans le forum ASP.NET
    Réponses: 5
    Dernier message: 17/11/2010, 21h58
  3. Bizarre de problème 7-zip sous Windows 7 Home Premium 64 bits
    Par annedeblois dans le forum Windows 7
    Réponses: 5
    Dernier message: 14/05/2010, 03h37
  4. Problème de Zip ! :/
    Par Sylver--- dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/06/2007, 12h38
  5. Problème compression zip
    Par Kara dans le forum Delphi
    Réponses: 2
    Dernier message: 19/07/2006, 10h22

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