2016-03-28 20 views
-1

こんにちはすべて私はJavaの開発には新しく、これについて本当に混乱しています。 私はウェブアプリケーションをやっていて、私の問題はファイルをインポートしてiディレクトリに置く方法です。jsfを使用してディレクトリにファイルをインポートする方法

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
    xmlns:jsf="http://xmlns.jcp.org/jsf" 
    xmlns:pt="http://xmlns.jcp.org/jsf/passthrough" 
    xmlns:p="http://primefaces.org/ui" 
    template="/WEB-INF/template/template.xhtml"> 
<ui:define name="title">2G</ui:define> 


    <ui:define name="content"> 
    <h:form> 

    <h1> <font color="orange" size="7" > 2G</font></h1> 


    </h:form> 
    <h2 >Choose 2 files </h2> 
    <h:form> 
      <p:fileUpload fileUploadListener="#{import_2G.save()}" 
       mode="advanced" dragDropSupport="true" update="messages" 
       sizeLimit="100000000000" allowTypes="/(\.|\/)(xls)$/" /> 

      <p:growl id="messages" showDetail="true" /> 
     </h:form> 

</ui:define> 
</ui:composition> 

と、これはBeanファイルです:

@ManagedBean 
@RequestScoped 
public class Import_2G { 
    public Import_2G() { } 
    @EJB 
    private GestionCellRef2GLocal gestionCellRef2GLocal; 

    private UploadedFile uploadedFile; 

    public void save() throws IOException { 
     GestionCellRef2GRemote t = null; 


      Path folder = Paths.get("C:\\Upload"); 
      String filename = FilenameUtils.getBaseName(uploadedFile.getFileName()); 
      String extension = FilenameUtils.getExtension(uploadedFile.getFileName()); 
      Path file = Files.createTempFile(folder, filename + "-", "." + extension); 
      if (file != null) { 
       FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " was uploaded."); 
       FacesContext.getCurrentInstance().addMessage(null, message); 
      } 

      try (InputStream input = uploadedFile.getInputstream()) { 
       Files.copy(input, folder, StandardCopyOption.REPLACE_EXISTING); 


    } 
    } 

} 

任意のヘルプみんな私は、XHTMLファイルを作成していますか?

答えて

1

最初に約という名前の表記法をJavaで開始するを読む。命名規則を尊重せず、アンダースコア、スコアなどを使用すると、いくつかの問題が発生します。

第2に、enctypeを忘れました。あなたがバイナリデータをアップロードしたいときは、属性入れている必要があります。enctype="multipart/form-dataを」のは、ファイルのアップロードを構築してみましょう

まずフォーム:。

<h:form enctype="multipart/form-data"> 
    <p:fileUpload value="#{import2G.file}" 
        mode="advanced" dragDropSupport="true" 
      sizeLimit="100000000" 
      allowTypes="/(\.|\/)(xls)$/" 
      update="messages" 
      fileUploadListener="#{import2G.save}" /> 
</h:form> 

<p:growl id="messages" showDetail="true" /> 

そして、あなたのバッキングBean:

public void save(FileUploadEvent e) { 
    FileUpload file = event.getFile(); 
    String fileName = file.getFileName(); 
    String contentType = file.getContentType(); 
    byte[] content = file.getContents(); 
    saveFile(content); 
} 

private void saveFile(byte[] data) { 
    FileOutputStream fos = new FileOutputStream(DIR_NAME); 
    fos.write(data); 
    fos.close(); 
} 

フォーム内のリスナーを調べて、import2G.save()の代わりにimport2G.saveを使用します。これは実行時にFileUpload parameterがリスナーに渡されるためです。

+0

Garciaはあなたはこのコードでprimefaces libを使用しています。私はイベントのインポートに失敗しました。... – MOhamed

+0

saveFileについては、それはできません.DIR_NAMEを受け入れることはできません。私はすべてのパスを表示する必要がありますか? – MOhamed

+0

最後にこれを試した後、私はディレクトリへのアクセスを拒否しました:WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle](デフォルトタスク-7)/admin/2g.xhtml '@ 25,54' fileUploadListener = "# {import_2G.save} ":java.io.FileNotFoundException:C:\ Upload(AccuSrefusé):javax.el.E​​LException:/admin/2g.xhtml '@ 25,54' fileUploadListener ="#{import_2G.save} " – MOhamed

関連する問題