Bonjour,
J'ai un soucis avec le composant rich:fileupload.
Voici le code dans la page JSF
:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <rich:fileUpload fileUploadListener="#{fileUploadBean.listener}" maxFilesQuantity="#{fileUploadBean.uploadsAvailable}" id="upload" immediateUpload="#{fileUploadBean.autoUpload}" acceptedTypes="jpg, gif, png, bmp" allowFlash="#{fileUploadBean.useFlash}"> </rich:fileUpload>
la classe FileUploadBean :
L'erreur se produit sur la ligne :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 public class FileUploadBean{ private static Logger logger = Logger.getLogger(FileUploadBean.class); private ArrayList<File> files = new ArrayList<File>(); private int uploadsAvailable = 5; private boolean autoUpload = true; private boolean useFlash = false; public int getSize() { if (getFiles().size()>0){ return getFiles().size(); }else { return 0; } } public FileUploadBean() { } public void listener(UploadEvent event) throws Exception{ if (event == null) { logger.warn("Invalid upload event"); } else { // on recupere l'item envoye UploadItem uploadItem = event.getUploadItem(); if (uploadItem.getFile().isFile()) { // si c'est bien un fichier String repo = "C:"; // a vous d'adapter a votre //code ici on recupere le path vers le repertoire ou stocker le fichier File fileToWrite = new File(repo + File.separator + uploadItem.getFileName()); // on construit un Fichier avec le path/nomdufichierrecu File uploadedFile = uploadItem.getFile(); FileChannel in = null; // on va utiliser deux files channel pour faire la recopie FileChannel out = null; try { in = new FileInputStream(uploadedFile).getChannel(); out = new FileOutputStream(fileToWrite).getChannel(); in.transferTo(0, in.size(), out); // on recopie le fichier en entree dans le repertoire voulu //availableFileList.add(new FileUpload(fileToWrite.getName(), false)); // ici FileUpload est une classe interne // au projet contenant simplement les donnees propres au fichier //mais on porurait ajouter le nom simplement a //une liste de String //logger.debug("ADDED : #0", availableFileList.get(availableFileList.size() - 1).getFileName()); //logger.debug("fileUploadListener : LIST SIZE #0", availableFileList.size()); } catch (IOException ex1) { // recuperations des exceptions possibles logger.error("Error while copying the file."); } finally { // fermeture des filechannel if (in != null) { try { in.close(); } catch (IOException ex2) { logger.error("Can't close input file channel"); } if (out != null) { try { out.close(); } catch (IOException ex3) { logger.error("Can't close ouput file channel"); } } } } } } } }Y aurait-il une âme charitable qui puisse m'aider à résoudre mon soucis ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (uploadItem.getFile().isFile())
Merci
Partager