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 :
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
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(); } } }
Et mon erreur :
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; ?>
Quelqu'un saurait-il résoudre mon problème ?
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)
Partager