Типичным способом загрузки файлов браузерами является использование поля ввода type='file'
.Нет способа загрузить файл, используя AJAX без формы.По крайней мере, я не смог найти ни одного.Я думаю, это мера безопасности.
Поэтому, чтобы выгрузка файла была доступна, вы должны предоставить форму с file
вводом.Форма должна быть отправлена с помощью обычного запроса, а не AJAX.
Таким образом, вы должны определить FormPanel
и добавить FileUpload
к нему.Пример:
final FormPanel form = new FormPanel();
form.setAction("my.action");
// Because we're going to add a FileUpload widget, we'll need to set the
// form to use the POST method, and multipart MIME encoding.
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
// Create a FileUpload widget.
fileUpload = new FileUpload();
fileUpload.setName("fileUpload");
form.add(fileUpload);
// Add other components to form
Другие компоненты будут включать ввод текста пользователем.Могут быть варианты для их обработки по-разному, но я думаю, что лучше всего обрабатывать их через одну и ту же отправку формы.
Теперь вам нужно добавить что-то, чтобы инициировать отправку формы.
submitButton = new Button("Upload", new ClickHandler() {
public void onClick(ClickEvent event) {
form.submit();
}
});
formPanel.add(submitButton);
Наконец, вы должны обработать загрузку.Вы можете сделать это несколькими способами, но это должна быть регулярная обработка запросов, а не через AJAX или GWT.Мне лично нравится использовать Spring MVC для этого.Но вы можете использовать свои рамки по вашему выбору.Я не собираюсь раскрывать детали здесь.Вы можете написать скрипт на Perl, если хотите.
Есть альтернативы этому подходу.Вы можете использовать Flash, вы можете использовать Adobe AIR, и могут быть другие подходы.Есть виджеты для этих подходов в разных библиотеках.Проверьте этот сайт: http://google.wikia.com/wiki/Google_Web_Toolkit.
Отказ от ответственности: Это подход, который я использовал.Возможно, я что-то пропустил, и могут быть другие подходы, о которых мне хотелось бы узнать.