FileUpload: получить полный путь к файлу CSV

Я работаю над проектом или хочу загрузить файл Excel CSV, который содержит данные из таблицы, которая у меня есть в базе данных, используя запрос LOAD DATA LOCALЯ проверяю запрос, используя полный путь к файлу и его путь (пример C: //../file.csv) прямо в запросе работает без проблем, хотел работать с библиотекой primefaces p: fileUpload и когда я выбираю файл CSV со своего рабочего стола или из другого каталога на моем компьютере, он возвращает только имя выбранного файла, а не полный путь попадания, у меня появляется ошибка:

org.hibernate.exception.GenericJDBCException: could not execute statement
java.io.FileNotFoundException: extraction1.csv (The specified file can not be found)

Принудительно, потому что нет полного пути к файлу с именем папки, я хочу вернуть имя файла с его корневыми файлами, из которого я выбрал, чтобы мой запрос мог выполняться правильно, чтобы показать в приведенном ниже коде я хочу, чтобы путь, где находится файл, когда я выбираю, также возвращался с именем рассматриваемого файла, и спасибо.

prelevServ.importToDB("C:\\Users\\helyoubi\\Desktop\\Japon 2\\"+fichierUpload.getFileName());

Моя форма JSF:

<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>

Моя формула управляемого бина:

    @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");
         
    }
     
     
 
}

Мой запрос:

@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();
         
    }

1 ответ

Попробуйте отправить.getPath():

prelevServ.importToDB(fichierUpload.getPath());
Другие вопросы по тегам