FTPClient, upload de stream
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:
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.