2014-05-20 2 views
0

그때 다른 정보와 데이터베이스의 경로를 저장하기 위해 노력하고, 처음에는 시스템 디렉토리에 파일을 업로드 파일을 업로드 JSF 2를 사용하고, 내 붙어 내가 제출시 점이다 데이터베이스 JSF에 저장 파일을 성공적으로 업로드하고, 올바른 위치에서 찾으며, 설명, 파일 이름 ... 등의 다른 정보를 데이터베이스에서 찾지 만 경로를 찾지 못합니다. 이 내 관리 빈입니다 : 데이터베이스에있는 파일에 대한 정보를 저장하는 데 사용됩니다업로드 파일

package mbeans; 

    import java.io.File; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.OutputStream; 
    import java.net.URL; 
    import java.util.List; 

    import javax.faces.bean.ManagedBean; 
    import javax.faces.bean.RequestScoped; 
    import javax.faces.bean.SessionScoped; 
    import javax.faces.context.ExternalContext; 
    import javax.faces.context.FacesContext; 
    import javax.servlet.http.HttpServletResponse; 
    import javax.servlet.http.Part; 

    import daoImpl.DocDAO; 
    import entities.Document; 

    @ManagedBean 
    @RequestScoped 
    public class DocBean { 
     public DocDAO docDAO; 
     private Part file; 
     private String titreDocument; 
     private String descriptionDocument; 
     private String lien; 
     private String dateMise; 
     private String Categorie; 
     private String chemin; 
     private String sousCategorie; 
     private Integer idDocument; 
     public DocBean(){ 
      docDAO=new DocDAO(); 
     } 

     public String upload() throws IOException{ 
     file.write(getFilename(file)); 
     docDAO.createDoc(idDocument, titreDocument, descriptionDocument, sousCategorie, Categorie, chemin, dateMise, lien); 
     idDocument=null; 
     titreDocument=""; 
     descriptionDocument=""; 
     lien=""; 
     sousCategorie=""; 
     dateMise=""; 
     Categorie=""; 
     chemin +="C:\\data\\" ; 

     try{ 

    File afile =new File("C:\\Users\\free\\Desktop\\glassfish-4.0\\glassfish4\\glassfish\\domains\\domain1\\generated\\jsp\\copy2mavenTest1111\\"+ getFilename(file)); 

      if(afile.renameTo(new File("C:\\data\\" +getFilename(file)))){ 
      System.out.println("File is moved successful!"); 
      }else{ 
      System.out.println("File is failed to move!"); 
      } 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

      return"succes"; 
     } 
     private static String getFilename(Part part){ 
      for(String cd: part.getHeader("Content-Disposition").split(";")){ 
       if(cd.trim().startsWith("filename")){ 
        String filename=cd.substring(cd.indexOf('=')+1).trim().replace("\"", ""); 
        return filename.substring(filename.lastIndexOf('/')+1).substring(filename.lastIndexOf('\\')+1); 
       } 

      } 
      return null; 
     } 


     public List<Document> getAlldoc(){ 
      return docDAO.getAllDoc(); 
      } 

     public String getSousCategorie() { 
      return sousCategorie; 
     } 

     public void setSousCategorie(String sousCategorie) { 
      this.sousCategorie = sousCategorie; 
     } 

     public String getTitreDocument() { 
      return titreDocument; 
     } 

     public void setTitreDocument(String titreDocument) { 
      this.titreDocument = titreDocument; 
     } 

     public String getDescriptionDocument() { 
      return descriptionDocument; 
     } 

     public void setDescriptionDocument(String descriptionDocument) { 
      this.descriptionDocument = descriptionDocument; 
     } 

     public String getDateMise() { 
      return dateMise; 
     } 

     public Integer getIdDocument() { 
      return idDocument; 
     } 

     public void setIdDocument(Integer idDocument) { 
      this.idDocument = idDocument; 
     } 

     public void setDateMise(String dateMise) { 
      this.dateMise = dateMise; 
     } 

     public String getCategorie() { 
      return Categorie; 
     } 

     public void setCategorie(String categorie) { 
      Categorie = categorie; 
     } 

     public String getLien() { 
      return lien; 
     } 
     public void setLien(String lien) { 
      this.lien = lien; 
     } 


     public Part getFile() { 
      return file; 
     } 
     public void setFile(Part file) { 
      this.file = file; 
     } 
     public String getChemin() { 
      return chemin; 
     } 
     public void setChemin(String chemin) { 
      this.chemin = chemin; 
     } 

    } 

내 DAO :

package daoImpl; 

import java.util.List; 

import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 
import javax.persistence.Query; 

import entities.Document; 

@Stateless 

public class DocDAO { 

    private static EntityManager em; 
    private static EntityManagerFactory factory; 


    public DocDAO() { 
     if(factory==null) 
      factory=Persistence.createEntityManagerFactory("mavenTest"); 
     if(em==null) 
      em=factory.createEntityManager(); 
    } 
    public List<Document> getAllDoc() { 
     List<Document> listeDoc; 
     Query q; 
     em.getTransaction().begin(); 
     q=em.createQuery("select d from Document d ORDER BY d.dateMise"); 
     listeDoc = q.getResultList(); 
     em.getTransaction().commit(); 
     return listeDoc ; 
    } 
    public void createDoc(Integer idDocument, String titreDocument, 
      String descriptionDocument, String sousCategorie 
      , String Categorie, String chemin, String dateMise, String lien) { 

     em.getTransaction().begin(); 
     Document f =new Document(); 
     f.setIdDocument(idDocument); 
     f.setDateMise(dateMise); 
     f.setDescriptionDocument(descriptionDocument); 
     f.setLien(lien); 

     f.setTitreDocument(titreDocument); 
     f.setCategorie(Categorie); 
     f.setSousCategorie(sousCategorie); 
     em.persist(f); 
     em.getTransaction().commit(); 

    } 
} 

마지막으로 Y XHTML 페이지 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
<head></head> 
<body> 

<h3>ajouter un nouveau document </h3><br/> 
    <h:form enctype="multipart/form-data" id="form1"> 
     <h:outputText value="Nom du document"> </h:outputText> 
     <h:inputText value="#{docBean.titreDocument}"></h:inputText><br/> 
     <h:outputText value="description"></h:outputText> 
     <h:inputText value="#{docBean.descriptionDocument}"></h:inputText><br/> 
     <h:outputText value="chemin"></h:outputText> 
     <h:inputHidden value="#{docBean.chemin}"></h:inputHidden><br/> 
     <h:outputText value="Date de la mise "></h:outputText> 
     <h:inputText value="#{docBean.dateMise}"></h:inputText><br/> 
     <h:outputText value="Lien"></h:outputText> 
     <h:inputText value="#{docBean.lien}"></h:inputText><br/> 
     <h:outputText value="Catégorie"></h:outputText> 
     <h:inputText value="#{docBean.categorie}"></h:inputText><br/> 
     <h:outputText value="sous catégorie"> </h:outputText> 
     <h:inputText value="#{docBean.sousCategorie}"></h:inputText><br/> 
     <h:outputText> télécharger le document</h:outputText> 
     <h:inputFile value="#{docBean.file}"></h:inputFile><br/> 
     <h:commandButton value="valider" action="#{docBean.upload}"/> 
    </h:form> 

</body>     
</html> 

감사합니다.

+0

이 방법은 매우 좋지 않다 : 하나 개의 서버가 두 번째 서버의 시스템 디렉토리에 액세스 할 수 없습니다. BLOB으로 데이터베이스에 이미지를 저장하는 더 나은 방법. 각 응용 프로그램 서버는 DB에 액세스 할 수 있으며 해당 응용 프로그램 서버에서 데이터를 읽을 수 있습니다. –

+0

답장을 보내 주셔서 감사합니다. –

+0

업로드 한 것은 이미지뿐만 아니라 pdf, 텍스트, 이미지 ... 업로드 된 파일을 특정 디렉토리로 이동하기로 선택했습니다. –

답변

0

은 내가 DocDAO 클래스의 모든 f.setChemin (슈맹)를 참조하지 않습니다. 경로가 엔터티의 다른 위치에 설정되어 있지 않으면 문제가 될 수 있습니다. 다중 응용 프로그램에 대한

+0

감사합니다. 나는주의를 기울이지 않았습니다. 데이터베이스에 빈 문자열이 저장되어 있지 않습니다. 경로 : chemin = "C : \\ data \\"+ getfileName (파일) –

+0

f.setChemin (chemin)을 추가 했습니까? 그렇다면 문제가 해결 되었습니까? – ForguesR

+0

예 그것을 추가하고 당신의 answer.solved –