#gwt #file-upload
#gwt #загрузка файла
Вопрос:
Я пытаюсь создать простую кнопку, и при нажатии на нее я хочу запустить скрытый виджет FileUpload, который находится внутри FormPanel. До сих пор я делал две вещи:
- Я создал встроенную функцию javascript, которая щелкает элемент виджета FileUpload при нажатии простой кнопки. Это отлично работает в Firefox, но не работает в Chrome.
- Кроме того, я создал это: nativeEvent nevent = Document.get().createFocusEvent();// Я пробовал и createclickEvent() тоже.
DomEvent.fireNativeEvent (nevent, fileUploadWidget); Это вообще не работает.
Кто-нибудь может мне помочь, пожалуйста??? Я много искал, но не нашел ничего работающего.
Ответ №1:
myFileUpload.getElement().<InputElement>cast().click()
это то, что вы ищете.
Чтобы он работал в браузерах на основе WebKit (Chrome, Safari), FileUpload должен быть «выведен из поля зрения», но не скрыт (как в setVisible(false)
, который устанавливает для display
свойства CSS значение none
), т.Е. что-то вроде (в CSS): position:absolute; top: -1000px; left: -1000px;
Ответ №2:
Я считаю, что ответ Томаса Бройера устарел. Я только что успешно использовал myFileUpload.click()
без проблем.
Я также использовал setVisible(false)
в FileUpload
поле, и это работает в Chrome. Не тестировался в Safari, но, похоже, теперь эти проблемы решены.
Комментарии:
1. Я использую SDM целую вечность, и он отлично работает в Chrome и FF
Ответ №3:
Вы также можете использовать JSNI следующим образом:
private native void triggerClick(Element e) /*-{
e.click();
}-*/;
Затем вызовите
triggerClick(fileInput.getElement());