2011-12-02 1 views
0

У меня есть виджет fileUploader, который я использую для выбора xml-файла. Затем у меня есть кнопка, вызывающая мой обработчик в классе viewImpl, когда пользователь отправляет выбранный файл. Если я правильно понимаю, оттуда я делаю отправку из формыPanel, и файл находится на сервере.Как получить inputStream с сервера с помощью fileUploader и GWT 2.4?

@UiHandler("calculateComplexityButton") 
    void onClickCalculateComplexity(ClickEvent e){ 
     formPanel.submit(); 
     //How do I get the inputStream back to here???? 
     presenter.getTask(inputStream); 
    } 

Моя проблема заключается в том, как получить входной поток с сервера? Я попытался использовать RPC-вызов для всего этого, но когда я пытаюсь получить inputStream, я ничего не вытаскиваю из сервера. Я пробовал:

inputStream = request.getInputStream(); 

но он кажется пустым. Есть идеи по этому поводу?

Я опустил код RPC и использовал простой HTTPRequest, который я нашел here. Это приводит меня к сервлету, но в запросе нет потока файлов. Когда я достигаю эту строку в коде:

FileItemIterator iter = upload.getItemIterator(request); //Nothing is here in iter. 
+0

Вы используете Java на стороне сервера? –

+0

Да. Я думал, что понял это. Я использую вызов службы RPC для serviceImplServlet, который расширяет RemoteServiceServlet. Я добираюсь до сервлета, но получение входного потока, созданного и размещенного на сервере файловым загрузчиком, похоже, не работает, и я не уверен, как это сделать? –

ответ

1

Вы не можете сделать загрузку через RPC, то почему вы должны отправить форму на сервлет.

final FormPanel form = new FormPanel(); 
form.setEncoding(FormPanel.ENCODING_MULTIPART); 
form.setMethod(FormPanel.METHOD_POST); 
form.setAction("/upload"); 

Так что, когда вы делаете form.submit() он будет посылать свой файл в действии (Servlet). На стороне сервера вы можете использовать форму lib apache (commons-fileupload). У вас есть много разных способов получить файл, вы можете сэкономить на диске, прочитать в памяти ....

+0

Я не использую RPC для загрузки файлов, я использую RPC для реализации реализации RemoteServiceServlet, и оттуда я пытаюсь вернуть поток файлов. Я не установил действие формы, хотя, поэтому я должен использовать HTTPServlet, чтобы вытащить inputStream обратно с сервера? –

+0

К сожалению, вам нужно! –

+0

Хорошо, но я не вижу ничего в запросе. Установил ли виджет загрузчика атрибут загруженного файла? –