0

我正在使用 fileuplod primefaces。我有 3 个按钮。每个按钮负责上传文件。我的第一个陡峭是在我的 bean 上使用 3 种方法来上传每个文件。有没有办法为所有类型制作相同的方法?每个文件都有自己的目录。

<h:form enctype="multipart/form-data"  style="height:125px;width:75px;">

                   <p:fileUpload  auto="true" 
                   fileUploadListener="#{composantbean.handleFileUpload(???,1)}"
                   sizeLimit="2097152"
                   label="Choose"
                   allowTypes="/(\.|\/)(pdf)$/"
                   description="Images"/> 
               </h:form>

在我的托管 bean 上,我正在考虑这个解决方案:

  public void handleFileUpload(FileUploadEvent event,int i) {
        String lienPDN =destination+"PDN\\"+FilenameUtils.getName(event.getFile().getFileName());
        File result = new File(lienPDN);
         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);
          selcetitem.setLienPdn(lienPDN);
          } catch (IOException e) {

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

1 回答 1

2

我认为更好的方法可能是实现三种handleFileUpload()方法。每个人都可以处理他们唯一的代码(例如传递正确的文件路径)。从那里您可以调用private void wrapUpUpload(String path, (...)).

最重要的是,这可以使您的代码保持可读性。If 还可以防止更改handleFileUpload().

例如: 确保用有意义的东西替换1, 2,3

void handleFileUpload1(FileUploadEvent event) { 
    String path = "/uploads/1/";
    wrapUpUpload(path);
}

void handleFileUpload2(FileUploadEvent event) { 
    String path = "/uploads/2/";
    wrapUpUpload(path);
}

void handleFileUpload3(FileUploadEvent event) { 
    String path = "/uploads/3/";
    wrapUpUpload(path);
}

private void wrapUpUpload(String path, (...)) {
    // Upload the file
}
于 2013-05-03T08:51:35.247 回答