2012-10-22 12 views
6

GWTで書かれたWebアプリケーションからサーバーにファイルをアップロードする必要があります。複雑な部分は、FileUploadダイアログボックスを表示できないことです(TabPanelのスペースクランチの問題のため)。だから、ボタンをクリックするだけで、私のことを行う必要があります GWT - FileUploadダイアログを使用せずにサーバーにファイルをアップロード

  • スタートファイル選択後、すぐにアップロードをクリックしUploadItemを含む追加のフォームを持つユーザーの手を煩わせることなく直接

    • を開き、ファイル選択
    これは、ファイル選択ダイアログを開きんが

    final FileUpload upload = new FileUpload(); 
    
    upload.setVisible(false); 
    upload.setName("uploadFormElement"); 
    panel.add(upload); 
    
    panel.add(new Button("Select File", new ClickListener() 
    { public void onClick(Widget pSender) 
    { 
        jsClickUpload(upload.getElement()); 
        MessageBox.showMessage("selected filename: " + upload.getFilename()); 
    } 
    })); 
    
    native void jsClickUpload(Element pElement) /*-{ pElement.click(); }-*/; 
    

    私は、ボタンのクリックでダイアログボックスを選択し、ファイルを開くには、GWTに次のコードを書かれていますボタンをクリックすると同時に、ファイル名の空白値を持つメッセージボックスも表示されます。

    私が必要とするのは、ファイルが選択された後で、メッセージボックスが表示されることです。これどうやってするの?また、どのようにこの後にサーバーへの実際のファイルをアップロードする(M

  • 答えて

    8

    ここでは、実施例である:

    public void onModuleLoad() { 
        final FileUpload upload = new FileUpload(); 
    
        upload.setVisible(false); 
        upload.setName("uploadFormElement"); 
        RootPanel.get().add(upload); 
    
        Button b = new Button("Select File"); 
        b.addClickHandler(new ClickHandler() { 
         @Override 
         public void onClick(ClickEvent event) { 
          jsClickUpload(upload.getElement()); 
         } 
        }); 
    
        upload.addChangeHandler(new ChangeHandler() { 
    
         @Override 
         public void onChange(ChangeEvent event) { 
          Window.alert(upload.getFilename()); 
         }}); 
    
        RootPanel.get().add(b); 
    } 
    
    native void jsClickUpload(Element pElement) /*-{ 
        pElement.click(); 
    }-*/; 
    

    アップロードを受け取るサーブレットを必要とする、それをアップロードするには、私は、この追加のライブラリを使用します。http://code.google.com/p/gwtupload/あなたは

    +0

    いいえ、動作しません。ファイルが選択された後でMessageBoxが表示されません。ファイルが選択された後にのみ、実際のアップロードが取得される必要があります。 (MessageBoxはテスト用のPlaaceホルダーであり、実際のサーブレットのアップロードコードに置き換えられます) –

    +0

    私は置き換えますdは実際の例で答えます。このコードは、GWT 2.4.0を使用して私のために完全に正常に動作します。 – newnoise

    +0

    は本当にあなたの助けに感謝しますが、それは私にとっては役に立ちません。私はWindow.alertを見ることができません。私はGWT 2.3.0を使用しており、FFブラウザ(最新版)でも同じことをテストしていますが、それは大したことではないと思います。 –

    関連する問題