Bonjour,

Je souhaite uploader sur un serveur ftp un fichier .xml généré au préalable sous la forme d'un ByteArrayInputStream. Cela fonctionne plutôt bien. Rien n'est écrit sur le disque.

Seulement, ce fichier xml généré peut être assez lourd, je souhaite donc le mettre en un fichier zip, et la je bloque.

Je ne vois pas comment créer un fichier zip puis l'uploader avec la méthode storeFile(String remote, InputStream local) de FTPClient (org.apache.commons.net.ftp.FTPClient).

Voilà un bout de 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
private ByteArrayInputStream zipData(StringWriter writer) {
		int size = 0;
		byte[] buffer = new byte[1024];
 
		ByteArrayInputStream in = new ByteArrayInputStream(writer.toString().getBytes());
 
		ZipEntry entry = new ZipEntry("test.zip");
 
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		ZipOutputStream zos = new ZipOutputStream(out);
 
		CheckedOutputStream checksum = new CheckedOutputStream(out, new Adler32());
 
		zos = new ZipOutputStream(new BufferedOutputStream(checksum));
 
		try {
			zos.putNextEntry(entry);
			zos.write(writer.toString().getBytes());
 
			// copier et compresser les données
			while ((size = in.read(buffer, 0, buffer.length)) > 0) {
				zos.write(buffer, 0, size);
			}
 
			in.close();
			in = new ByteArrayInputStream(zos.toString().getBytes());
 
			zos.closeEntry();
 
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		return in;
	}
Mais le zip uploadé est corrompu, il ne pèse qu'un Ko. Bref, je ne vois pas comment faire :/

Merci de votre aide.