Фильтры и обработчики для загрузки файлов


В моем проекте GWT я хотел бы:

  1. Установите фильтр для виджета FileUpload, чтобы он принимал только файлы JPG.

  2. Включите myButton, если виджет FileUpload, называемый chooser, имеет любой выбранный файл. И отключите myButton в противном случае.

Это мой код для пункта 2, но он не работает. Есть идеи? Заранее спасибо!
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);
} });
2 5

2 ответа:

@Пункт 1: я думаю, невозможно отфильтровать, какие файлы можно выбрать. Единственный способ для меня-сравнить в обработчике формы, например:

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

Другое решение-использовать ExtGWT с FileValidator:

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

@пункт 2: выбирающий.isAttached () - неверное условие имхо....вам нужно проверить, пусто ли поле ввода.

Я включил строку, подобную приведенной ниже:

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

Это действительно сработало для меня, используя GWT FileUpload