Bonjour tous le monde,
je suis confronté à un souci que je n'arrive pas à élucider.
Je souhaite envoyer via HTTP un dossier zipper (zipper avec les librairies standart de java). L'envoi se passe bien du coté client car le serveur recoit exactement le nombre d'octet envoyé qui correspond bien au poids du zip d'origine.
Mon seul souci est que lorsque j'essaye d'ouvrir mon dossier ZIP qui contient bien tous les dossiers et fichiers voulus (avec leur poids respectifs valides), winrar ou meme windows me dise que le dossier est corrompu et donc impossible de l'ouvrir.
Quelqu'un pourrait t'il m'éclaircir, voici mon code M%
Code client :
Code 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
25
26
27
28
29
30
31
32
33
34
35
36
37 static String callHttp(String surl, File f, String login, String pwd) throws Exception { System.out.println("HttpListener.callHttp[" + surl + "//" + login + ":" + pwd + "]: "); HttpURLConnection httpCon = null; URL u = null; StringBuffer res = new StringBuffer(); FileInputStream fis = null; OutputStreamWriter out = null; BufferedReader in = null; try { u = new URL(surl); httpCon = (HttpURLConnection) u.openConnection(); httpCon.setDoOutput(true); httpCon.setDoInput(true); httpCon.setRequestProperty("Content-Type", "application/zip"); byte[] bFile = new byte[(int) f.length()]; fis = new FileInputStream(f); fis.read(bFile); out = new OutputStreamWriter(httpCon.getOutputStream()); out.write(new String(bFile)); out.flush(); in = new BufferedReader(new InputStreamReader(httpCon.getInputStream())); String sline = null; System.out.println("Reception des donnees retours..."); while ((sline = in.readLine()) != null) res.append(sline); System.out.println("[" + res.toString() + "]"); } finally { if (fis != null) fis.close(); if (out != null) out.close(); if (in != null) in.close(); if (httpCon != null) httpCon.disconnect(); } return res.toString(); }
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 System.out.println("com.sellside.web.servlet.ExportListener.processInputStream"); File folder = new File(Mem.getProperty("foldercvs") + "/working/mydirectory"); if (! folder.exists()) folder.mkdirs(); File f_zip = new File(folder, "myZipFile1.zip"); PrintWriter pw = null; BufferedInputStream bis = null; int content_length = 0; try { /************HTTP HEADER************/ Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String headerName = (String)headerNames.nextElement(); if (headerName.indexOf("content-length") > -1) { content_length = Integer.parseInt(request.getHeader(headerName)); } String headerValue = request.getHeader(headerName); System.out.println(headerName + " : " + headerValue); } /********************************/ bis = new BufferedInputStream(request.getInputStream()); byte[] contents = new byte[1024]; int bytesRead = 0; int sum = 0; StringBuffer sb = new StringBuffer(); while( (bytesRead = bis.read(contents)) != -1){ sum += bytesRead; System.out.println(sum + " / " + content_length + " ==> " + sum * 100/content_length + "%"); sb.append(new String(contents, 0, bytesRead)); } pw = new PrintWriter(new FileWriter(f_zip, true)); pw.print(sb.toString()); pw.flush(); } finally { try { if (bis != null) bis.close(); if (pw != null) pw.close(); } catch(Exception e) {} }
Partager