2011-07-25 12 views
5

w moim projekcie GWT chciałbym:Filtry i teleskopowe na FileUpload

  1. ustawić filtr dla widgetu FileUpload więc, że akceptuje tylko pliki JPG.

  2. Włącz myButton, jeśli widżet FileUpload, o nazwie chooser, ma dowolny wybrany plik. I wyłącz w inny sposób myButton.

To jest mój kod dla punktu 2, ale to nie działa. Jakieś pomysły? Z góry dziękuję!

chooser.addAttachHandler(new Handler() { 
public void onAttachOrDetach(AttachEvent event) { 
if(chooser.isAttached()==false && myButton.isEnabled()==true) 
    myButton.setEnabled(false); 
else if(chooser.isAttached()==true && myButton.isEnabled()==false) 
    myButton.setEnabled(true); 
} }); 

Odpowiedz

2

@Point 1: Myślę, że nie można filtrować, które pliki można wybrać. Jedynym sposobem dla mnie jest porównać do obsługi formularza, na przykład:

form.addFormHandler(new FormHandler(){ 
    public void onSubmit(FormSubmitEvent event){ 
     if(!extension.equals("pdf")) { 
     // Error 
     } else { 
     // Submit 
     } 
    } 
} 

Innym rozwiązaniem jest użycie ExtGWT z FileValidator:

fileUpload = new FileUploadField(); 
fileUpload.setWidth("240"); 
fileUpload.setValidator(new FileValidator()); 
fileUpload.setName("file"); 
fileUpload.setAccept("pdf"); 

@Point 2: chooser.isAttached() jest zły stan imho .... musisz sprawdzić, czy pole wejściowe jest puste.

+0

dzięki za pomoc! @ 1 to nie jest obiekt Form, to tylko obiekt FileUpload. Który następnie byłby prawą obsługą do ustawienia filtra? @ 2, którego programu obsługi należy użyć, aby wiedzieć, że zmienił się status obiektu FileUpload (plik został dołączony lub odłączony), a następnie wykonać czynność przycisku w tym momencie? – Arturo

+1

@ 1: tak, ale plik FileUpload musi zostać dodany do formularza, który zostanie przesłany. A dla formularza możesz użyć addFormHandler @ 2: nie mam pojęcia ... chciałbym wypróbować coś takiego jak chooser.getElement (0) (lub 1 lub 2 itd .... dopóki nie otrzymasz pola wejściowego). A gdy już to zrobisz, możesz wypróbować coś takiego jak inputField.getText() i porównać to. – cupakob

3

włączyłem linię jak ta poniżej:

fileUpload.getElement().setAttribute("accept", "image/png, image/gif,image/jpeg"); 

To nie dla mnie pracować używając GWT FileUpload