Как извлечь inputStream с сервера, используя fileUploader и GWT 2.4?
У меня есть виджет fileUploader, который я использую для выбора файла XML. Затем у меня есть кнопка, которая вызывает мой обработчик в классе viewImpl, когда пользователь отправляет выбранный файл. Если я все правильно понимаю, оттуда я делаю отправку из formPanel, и файл находится на сервере.
@UiHandler("calculateComplexityButton")
void onClickCalculateComplexity(ClickEvent e){
formPanel.submit();
//How do I get the inputStream back to here????
presenter.getTask(inputStream);
}
Моя проблема в том, как мне получить inputStream с сервера? Я пытался использовать вызов RPC для всего этого, но когда я пытаюсь получить inputStream, я ничего не вытаскиваю с сервера. Я старался:
inputStream = request.getInputStream();
но он кажется пустым. Есть идеи по этому поводу?
Я удалил код RPC и использовал простой HTTPRequest, который нашел здесь. Это приводит меня к сервлету, но в запросе нет потока файлов. Когда я достигну этой строки в коде:
FileItemIterator iter = upload.getItemIterator(request); //Nothing is here in iter.
1 ответ
Вы не можете сделать загрузку через RPC, поэтому вы должны отправить свою форму сервлету.
final FormPanel form = new FormPanel();
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
form.setAction("/upload");
Таким образом, когда вы выполните form.submit(), он отправит ваш файл в Action(Servlet). На стороне сервера вы можете использовать форму lib apache ( http://commons.apache.org/fileupload/). У вас есть много разных способов получить ваш файл, вы можете сохранить на диске, прочитать в памяти....