如何使p:fileUpload工作?

时间:2014-11-17 06:19:39

标签: jsf file-upload primefaces

所以,伙计们,我已经决定做一个大学"家庭作业"使用JSF 2.2和PrimeFaces 5.0,理论上我最后,但我上传文件很困难,经过一整天的努力,我决定发帖。问题是文件没有到达应该去的地方,但是执行该方法并且没有显示错误和异常。

page.xhtml

<p:fileUpload id="msg"
              fileUploadListener="#{processoCtrl.handleFileUpload}" 
              allowTypes="/(\.|\/)(doc|docx|pdf)$/" mode="advanced" 
              sizeLimit="10485760"
              invalidFileMessage="Formato de arquivo inválido"/> 

<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true"/>

ManagedBean

public void handleFileUpload(FileUploadEvent event) {
         ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();

         // I already tryed //WEB-INF// , \\WEB-INF\\ e \WEB-INF\ (who knows...)
         File result = new File(extContext.getRealPath("/WEB-INF/" + event.getFile().getFileName()));
         System.out.println("/WEB-INF/" + event.getFile().getFileName());

         try {
               FileOutputStream fileOutputStream = new FileOutputStream(result);
               byte[] buffer = new byte[6124];
               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("File Description", "file name: " +
            event.getFile().getFileName() + " file size: " +
            event.getFile().getSize() / 1024 + "Kb content type: " +
            event.getFile().getContentType() + "The file was uploaded.");
      FacesContext.getCurrentInstance().addMessage(null, msg);
  } catch (IOException e) {
         e.printStackTrace();
         FacesMessage error = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erro.");
         FacesContext.getCurrentInstance().addMessage(null, error);
    }
}

Web.xml的一部分

<filter>    
   <filter-name>PrimeFaces FileUpload Filter</filter-name>
   <filter-class>
       org.primefaces.webapp.filter.FileUploadFilter
   </filter-class>
   <init-param>
       <param-name>thresholdSize</param-name>
       <param-value>51200</param-value>
   </init-param>    
   <init-param>
       <param-name>uploadDirectory</param-name>
       <param-value>
           /var/temp
       </param-value>
   </init-param>             
</filter>
<filter-mapping>
   <filter-name>PrimeFaces FileUpload Filter</filter-name>
   <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
PS:这是今天经过无数次的最后一次尝试!这个似乎是一个小小的“更好的”#34; 。

0 个答案:

没有答案