cancel
Showing results for 
Search instead for 
Did you mean: 

Comment faire un téléchargement de plusieurs fichiers sous format zip?

nounou7034
Champ in-the-making
Champ in-the-making

Bonjour à tous,

Je veux faire un téléchargement de plusieurs fichier à partir d'une liste. Cette dernière comporte des fichiers qui se trouvent sous Alfresco. J'ai réussi à télécharger un seul document. Mais lorsqu'il s'agit d'appliquer cette action sur plusieurs fichiers sélectionnés simultanément il s'avère que c'est impossible.
Donc, comme solution alternante, je voudrais zipper les fichiers sélectionnés en un seul fichier zip et le téléchargé en suite. Le problème est que en sélectionnant un fichier je peux seulement avoir son nom et son Node_Id et dans tous les exemple que j'ai trouvé je dois passé par le chemin du fichier ( qui est un chemin physique d’habitude).

Est ce que quelqu'un peux m'aider?
 

Voici un exemple de code que j'ai trouvé et que je veux l'adapter à ma fonction:

     public void doGet(HttpServletRequest request, HttpServletResponse response)                throws ServletException, IOException {            // Set the content type based to zip           response.setContentType("Content-type: text/zip");           response.setHeader("Content-Disposition",                     "attachment; filename=mytest.zip");            // List of files to be downloaded           List files = new ArrayList();           files.add(new File("C:/first.txt"));           files.add(new File("C:/second.txt"));           files.add(new File("C:/third.txt"));            ServletOutputStream out = response.getOutputStream();           ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(out));            for (File file : files) {                 System.out.println("Adding " + file.getName());                zos.putNextEntry(new ZipEntry(file.getName()));                 // Get the file                FileInputStream fis = null;                try {                     fis = new FileInputStream(file);                 } catch (FileNotFoundException fnfe) {                                          zos.write(("ERRORld not find file " + file.getName())                               .getBytes());                     zos.closeEntry();                     System.out.println("Couldfind file "                               + file.getAbsolutePath());                     continue;                }                 BufferedInputStream fif = new BufferedInputStream(fis);                 // Write the contents of the file                int data = 0;                while ((data = fif.read()) != -1) {                     zos.write(data);                }                fif.close();                 zos.closeEntry();                System.out.println("Finishedng file " + file.getName());           }            zos.close();      } }
5 REPLIES 5

ycoulon
Employee
Employee

Bonjour,

J'ai déplacé ton contenu dans l'espace dédié à la langue Française.

Quel version d'Alfresco utilise tu ?

Les version récentes d'Alfresco dispose déjà d'une action pour  cela. Elle se trouve dans le menu "Eléments sélectionnés..." :

Yann

nounou7034
Champ in-the-making
Champ in-the-making

merci beaucoup pour votre réponse. La version d'alfresco que j'utilise c'est alfresco 4.2.6.

Oui j'ai déjà vu cette option dans les versions récentes d'alfresco. mais , je veux faire cette action avec la programmation.

Bonjour,

Vous allez avoir besoin d'une fonction qui à partir d'une liste de NodeRef va créer le fichier ZIP puis de renvoyé ce fichier via un webscript.

Vous pouvez parcourir les sources  ou de share afin de retrouver le code qui se charge de l'action mentionné dans ma réponse précédente.

Yann

nounou7034
Champ in-the-making
Champ in-the-making

Bonjour Yann,

J'apprécie énormément votre réponse. Cependant, les webscripts proposés sont applicable pour les versions d'Alfresco 5 et plus? Donc ils ne sont pas compatible avec ma version actuelle.

Les sources actuelles sont effectivement celle de la version 5.

Cependant github propose également les sources des anciennes versions.

De plus je ne pense pas qu'il y'ai eu beaucoup de changement de ce côté la.