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(); } }