Bonjour, je travail sur un projet ou je souhaite uploader un fichier Excel CSV qui contient des donnée d'une table que j'ai dans la base de donnée en utilisant la requête "LOAD DATA LOCAL" , j'ai tester la requête en utilisant le chemin complet du fichier avec son path (exemple C://../file.csv) directement dans la requête ça marche sans problème , la j'ai voulu travailler avec la bibliothèque primefaces du p:fileUpload et quand je choisis un fichier CSV depuis mon bureau ou d'un autre répertoire de mon pc , ca retourne uniquement le nom du fichier que j'ai sélectionner et non pas le chemin complet du coup j'ai une erreur :

org.hibernate.exception.GenericJDBCException: could not execute statement

java.io.FileNotFoundException: extraction1.csv (Le fichier spécifié est introuvable)


Forcement car il n'y a pas le chemin complet du fichier avec le nom du dossier, ce que je souhaite c'est de retourner le nom du fichier avec ses dossiers racines d'ou je l'ai sélectionner afin que ma requête puisse s’exécuter correctement, comme montrer sur le code ci-dessous je souhaite que le chemin ou se trouve le fichier quand je sélectionne sois aussi retourner avec le nom du fichier en question , et merci .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
prelevServ.importToDB("C:\\Users\\helyoubi\\Desktop\\Japon 2\\"+fichierUpload.getFileName());
Mon formulaire JSF :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<h:form enctype="multipart/form-data">
*********
************<p:growl id="messages" showDetail="true" />
**********
************<p:fileUpload label="Choisir" value="#{importFichier.fichierUpload}" mode="simple" skinSimple="true"/>
*************
************<p:separator/>
**********
************<p:commandButton value="Envoyer" ajax="false" action="#{importFichier.importation}" />
*************
********</h:form>
Mon managedBean du formulaire :

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
@ManagedBean
public class ImportFichier implements Serializable{
*****
****/**
******
******/
****private static final long serialVersionUID = 1L;
*
****private UploadedFile fichierUpload;
*****
****private PrelevementServices prelevServ = new PrelevementServicesImpl();
*****
*
*****
****public UploadedFile getFichierUpload() {
********return fichierUpload;
****}
*
*
*
*
****public void setFichierUpload(UploadedFile fichierUpload) {
********this.fichierUpload = fichierUpload;
****}
*
*
*
*
****public void importation() {
*
********if(fichierUpload.getFileName()!= null) {
*********
************//prelevServ.importToDB("C:\\Users\\helyoubi\\Desktop\\Japon 2\\"+fichierUpload.getFileName());
*************
************prelevServ.importToDB(fichierUpload.getFileName());
*************
************FacesMessage message = new FacesMessage("Succesful", fichierUpload.getFileName()+ " is uploaded.");
*************
************FacesContext.getCurrentInstance().addMessage(null, message);
*************
********}else {
*************
************FacesMessage message = new FacesMessage("Le chemin du fichier : "+fichierUpload.getFileName()+" est introuvable");
*************
************FacesContext.getCurrentInstance().addMessage(null, message);
*************
********}
*********
*****
********System.out.println("CSV added to your the DB Table");
*********
****}
*****
*****
*
}
Ma requette :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Override
****public void importToDB(String cheminFichier) {
*********
********session.beginTransaction();
*********
********session.createSQLQuery("LOAD DATA LOCAL INFILE :filename INTO TABLE Prelevement_saisons FIELDS TERMINATED BY ',' ENCLOSED BY '\"'(espece,saison,departement,commune,code,attributions,realisations)").setString("filename", cheminFichier).executeUpdate();
*********
********session.getTransaction().commit();
*********
****}