2012-10-22 16 views
6

GWT'de yazılan web uygulamasından sunucuya dosya yükleme gereksinimim var. Karmaşık kısım, FileUpload iletişim kutusunun diskaled edilememesidir (TabPanel'deki boşluk sorunu nedeniyle). Yani bir düğmeye tıklayarak, ben gerekir: GWT - FileUpload iletişim kutusunu kullanmadan dosyaya dosya yükleme

  • Başlat dosya seçildikten sonra hemen yükleme tıkla bir UploadItem içeren ek bir formu ile kullanıcı rahatsız olmadan doğrudan

    • Açık dosya seçimi
    Bu dosya seçme iletişim kutusunu açın rağmen

    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(); }-*/; 
    

    :

    Ben düğmeyi tıklamak üzerinde iletişim kutusunu seçmek dosyayı açmak için GWT aşağıdaki kodu yazdım Düğme tıklatıldığında aynı anda dosya adı için boş bir değer içeren mesaj kutusu gösterilir.

    İhtiyacım olan şey, yalnızca dosya seçildikten sonra, mesaj kutusu görüntülenir. Bunu nasıl yapabilirim? .

    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(); 
    }-*/; 
    

    yüklemeyi alma Servlet ihtiyaç Bu ek kütüphane kullanımı Yüklemek için: http://code.google.com/p/gwtupload/ Ayrıca, bu nasıl (M İşte

  • cevap

    8

    çalışan bir örnektir sonra Server gerçek dosya yüklemek için web sitesinde gerekli olan tüm kodları bulmak için

    +0

    Hayır, işe yaramıyor. Dosya seçildikten sonra MessageBox'ı göremiyorum. İhtiyacım olan şey, SADECE dosya seçildikten sonra, gerçek yüklemenin tetiklendi (MessageBox test için sadece bir plaitor tutucu, gerçek servlet yükleme kodu ile değiştirilecektir) . –

    +0

    Ben değiştiriyorum d çalışma örneğiyle cevap. Bu kod, GWT 2.4.0 – newnoise

    +0

    'u kullanarak benim için gayet iyi çalışıyor ancak yardımın için gerçekten çok teşekkür ederim, ancak benim için işe yaramıyor. Window.alert'i göremiyorum. Ben GWT 2.3.0 kullanıyorum ve aynı FF tarayıcıda (son sürümü) test ediyorum, ama bunun çok önemli olduğunu düşünmüyorum. –

    İlgili konular