Bonjour,
J'ai pas mal cherché sur internet et j'ai été surprise de ne trouver que très peut de réponse. Je souhaite qu'un utilisateur client puisse downloader des documents depuis mon serveur.
J'ai trouvé un code qui marche très bien lorsque je n'envoie qu'un seul fichier.
Servlet download :
Code JSP : 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
36
37 public class DownloadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; private static final int BUFSIZE = 4096; private String filePath; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { filePath = "le chemin jusqu'à mon fichier"; File file = new File(filePath); int length = 0; ServletOutputStream outStream = response.getOutputStream(); ServletContext context = getServletConfig().getServletContext(); String mimetype = context.getMimeType(filePath); // sets response content type if (mimetype == null) { mimetype = "application/octet-stream"; } response.setContentType(mimetype); response.setContentLength((int)file.length()); String fileName = (new File(filePath)).getName(); // sets HTTP header response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); byte[] byteBuffer = new byte[BUFSIZE]; DataInputStream in = new DataInputStream(new FileInputStream(file)); // reads the file's bytes and writes them to the response stream while ((in != null) && ((length = in.read(byteBuffer)) != -1)) { outStream.write(byteBuffer,0,length); } in.close(); outStream.close(); } }
Je récupère le chemin (filePath) depuis une variable de session. Ce que je souhaiterais faire, c'est récupéré un dossier entier (dont j'ai le chemin) pour pouvoir ensuite proposer de télécharger l'intégralité de son contenu. Seulement, si je récupère le dossier et que je le parcours fichier par fichier, seul le premier fichier traité est proposé au téléchargement : je souhaite que ce soit le dossier tout entier que la fenêtre de téléchargement propose.
Voilà, j'espère avoir été assez clair, n'hésitez pas à me dire s'il manque des informations.
Merci de votre aide !![]()
Partager