bonjour tous le monde ;
dans une page jsf j'ai un DataTable dans lequel j'ai des commandlink qui permet de telecharger des fichier (pdf , xls ou csv) vous trouvez ci jointmon Datatable.
le problème que j'ai est :lorsque je click sur le commandlink la fenetre qui me demande soit d'enregister soi d'ouvrir soit d'annuler le fichier s'affiche je click sur ouvrir pour vois le fichier mais un message d'erreur m'apparait me disant que "adobe Reader n'a pas pu ouvrir le fichier monfichier.pdf car le type de fichier n'est pas pris en charge ou le fichier est endommager " si j'essay de telecharger un pfd ou une page vierge si j'essaye de télécharger un fichier csv;
l'actionlistener de mon commandlink pour telecharger un pdf est la suivante :
de meme pour les autres commandlink sauf je change l'extension du fichier a telecharger (au lieu du .pdf je mis .xls ou .csv),et je change l'argument du setContentType
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 public String loadPDF(ActionEvent event) throws IOException{ String nomfichier =(String) reportmodel.getRowData(); String reportPath =context+"\\"+nomfichier+".pdf"; File file = new File(reportPath); byte[] fileData = new byte[(int) file.length()]; HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse(); response.setHeader("Content-disposition", "attachment;filename="+nomfichier+".pdf"); response.setContentLength(fileData.length); response.getOutputStream().write(fileData); response.setContentType("application/pdf"); response.getOutputStream().flush(); response.getOutputStream().close(); return "report"; }
pour le format xls :
pour le format cvs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public String loadXLS(ActionEvent event) throws IOException{ .......... String reportPath =context+"\\"+nomfichier+".xls"; ........ response.setHeader("Content-disposition", "attachment;filename="+nomfichier+"_"+reportDate+".xls"); ... response.setContentType("application/vnd.ms-excel"); ..... }
pouvez vous m'indiquer dou vient ce problème d'endommage de mes fichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public String loadCSV(ActionEvent event) throws IOException{ ...... String reportPath =context+"\\"+nomfichier+".csv"; .... response.setHeader("Content-disposition", "attachment;filename="+nomfichier+"_"+reportDate+".csv"); .... response.setContentType("text/csv"); ..... }
merci infinement
Partager