Bonjour à tous,
je fais appel à vos lumières car après une journée de boulot j'ai pété les plombs devant mon problème :-) Mon serveur stocke des fichiers (rar, xls, ...).
Dans une JSP, l'utilisateur clique sur un lien qui appelle la servlet dont le code est ci-dessous. Le but est de télécharger le fichier sélectionné par l'utilisateur.
Une boîte de dialogue apparaît en demandant si je souhaite sauver le fichier. Pas de problème cela fonctionne SAUF que le fichier porte le nom de ma servlet et que l'OS ne reconnaît pas le fichier downloadé. Bref si ma servlet s'appelle "downloadFile" et que mon fichier se nomme "monBeauZip.rar", l'utlilisateur downloadera effectivement un fichier ".rar" portant le nom "downloadFile". Si j'utilise Struts, il portera le nom suivant : actionName.do (nom de l'action suivi de .do). Attention : pas de struts 1.2.6 mais 1.2.4.
Code : 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 public class DownloadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String filename = "blabla.rar"; FileInputStream in = new filename response.setContentType(attachment.getMimeType()); ServletOutputStream out = response.getOutputStream(); byte[] buffer = new byte[4 * 1024]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } response.setStatus(HttpServletResponse.SC_OK); response.setHeader("Content-Disposition", "attachment; filename=" + filename); } } catch (IOException e) { throw e; } finally { ServletOutputStream out = response.getOutputStream(); try{out.flush();}catch (Exception ignored) {} try{out.close();}catch (Exception ignored) {} } } }
Comment résoudre mon problème ? L'utilisateur est pour l'instant obligé de renommer son fichier pour pouvoir l'employer![]()
Merci d'avance pour l'aide apportée (que vous trouviez une solution ou non)
Coyote
Partager