2010-12-05 19 views
6

आज मुझे प्राइमफ़ेस फ़ाइल अपलोड के साथ कोई समस्या है। यह अच्छा काम करता है, लेकिन फ़ाइलों को जेबॉस की अस्थायी निर्देशिका में संग्रहीत किया जाता है, इसलिए जब भी मैं एप्लिकेशन को पुन: नियोजित करता हूं या केवल स्रोतों को svn पर प्रतिबद्ध करता हूं, तो मेरे द्वारा अपलोड की गई सभी छवियां चली जाती हैं। इसलिए मैं पूछना चाहता था कि क्या छवियों को युद्ध परियोजना की "स्रोत" निर्देशिका में सहेजने का कोई तरीका है या नहीं।j2ee प्राइमफ़ेस फ़ाइल अपलोड फ़ाइल फ़ाइल गंतव्य

मेरे handleFileUpload विधि:

public String getUrlBase() { 
    return FacesContext.getCurrentInstance().getExternalContext().getRealPath("//upload"); 
} 

public void handleFileUpload(FileUploadEvent event) { 
     new File(getUrlBase() + "/" + album.getId()).mkdirs(); 
     File result = new File(getUrlBase() + "/" + album.getId() + "/" + event.getFile().getFileName()); 

     try { 
      FileOutputStream fileOutputStream = new FileOutputStream(result); 

      byte[] buffer = new byte[BUFFER_SIZE]; 

      int bulk; 
      InputStream inputStream = event.getFile().getInputstream(); 
      while (true) { 
       bulk = inputStream.read(buffer); 
       if (bulk < 0) { 
        break; 
       } 
       fileOutputStream.write(buffer, 0, bulk); 
       fileOutputStream.flush(); 
      } 

      fileOutputStream.close(); 
      inputStream.close(); 

      FacesMessage msg = new FacesMessage("Succesful", 
        event.getFile().getFileName() + " is uploaded."); 
      FacesContext.getCurrentInstance().addMessage(null, msg); 

     } catch (IOException e) { 
      e.printStackTrace(); 
      FacesMessage error = new FacesMessage("The files were not uploaded!"); 
      FacesContext.getCurrentInstance().addMessage(null, error); 
     } 
    } 

संपादित करें: एक और मुद्दा

मेरे विचार फ़ाइल:

<h:form enctype="multipart/form-data" prependId="false"> 
     <p:growl id="messages" showSummary="true" showDetail="true" /> 
     <p:fileUpload fileUploadListener="#{photo.handleFileUpload}" 
         update="messages" sizeLimit="1073741824" 
         multiple="true" label="choose" allowTypes="*.jpg;*.png;*.gif;" 
         description="Images" /> 
    </h:form> 

जब मैं FileUpload को अद्यतन = "संदेश" जोड़ने मैं

मिल
javax.servlet.ServletException: null source 

जब भी मैं फ़ाइल अपलोड के साथ पेज खोलने की कोशिश करता हूं। क्या आप नहीं जानते कि इससे कैसे छुटकारा पाना है?

उत्तर

1

यदि आप चाहें तो web.xml में अपलोड निर्देशिका को कॉन्फ़िगर कर सकते हैं।

<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class> 
    org.primefaces.webapp.filter.FileUploadFilter 
    </filter-class> 
    <init-param> 
    <param-name>uploadDirectory</param-name> 
    <param-value>/Users/primefaces/temp</param-value> 
    </init-param> 
</filter> 
+1

उपयोग मार्गदर्शिका के अनुसार, यह केवल एक जगह है, जहां अस्थायी फ़ाइलें संग्रहीत की जाती हैं। मुझे कुछ छवियां अपलोड करने की आवश्यकता है और फिर उन्हें एक फोटो गैलरी में प्रदर्शित करने की आवश्यकता है ... इसलिए मैं उन्हें वेब रूट में "अपलोड" निर्देशिका में स्टोर करना चाहता हूं (उदाहरण के लिए। WEB-INF निर्देशिका है)। तो जब मैं svn को स्रोत करता हूं, तो अन्य लोगों के पास भी गैलरी में चित्र होंगे। मैंने अपलोड करने के लिए अपलोड करने/अपलोड करने की कोशिश की है लेकिन यह काम नहीं कर रहा है। –

+2

अपलोड छवियों को स्रोत फ़ोल्डर्स में न रखें। कभी नहीं (क्या आप PHP पृष्ठभूमि से आ रहे हैं?)। उन्हें डिस्क पर कहीं भी रखें। यदि आप उन्हें अन्य डेवलपर्स के साथ साझा करना चाहते हैं - उन्हें डेटाबेस में रखें (छोटी फ़ाइलों के लिए यह एक अच्छी पसंद है)। –

संबंधित मुद्दे