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(); } }
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
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
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.
Content from pre 2016 and from language groups that have been closed.
Content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.