2012-05-13 2 views
3

с клиентом как этотОбработка Multi-формы данных в Нетти

StringBody body = new StringBody("form_username", Charset.forName("UTF-8")); 
multipart.addPart("username", body); 
ByteArrayBody bBody = new ByteArrayBody(bs, "form_command.dat"); 
multipart.addPart("data", bBody); 
httppost.setEntity(multipart); 

Как значения должен быть получен на сервере Нетти. У меня уже есть HttpRequestDecoder, добавленный в конвейер. И сообщение обрабатывается таким образом

HttpRequest request = (HttpRequest) e.getMessage(); 
    this.mRequest = request; 


    if (is100ContinueExpected(request)) { 
     send100Continue(e); 
    } 

    ChannelBuffer content = request.getContent(); 
    if (content.readable()) { 

     System.out.println("Content()\n" + content.toString(CharsetUtil.UTF_8) + "\r\n"); 


    } 

Печатные выходы.

Content() 
--Xdq2t6unVsUp191MKhpR6BXz5P7Eoo 
Content-Disposition: form-data; name="username" 
Content-Type: text/plain; charset=UTF-8 
Content-Transfer-Encoding: 8bit 

form_username 
--Xdq2t6unVsUp191MKhpR6BXz5P7Eoo 
Content-Disposition: form-data; name="data"; filename="form_command.dat" 
Content-Type: application/octet-stream 
Content-Transfer-Encoding: binary 



--Xdq2t6unVsUp191MKhpR6BXz5P7Eoo-- 


End of contents 

ответ

1

Вам необходимо использовать новый HttpPostRequestDecoder. Это доступно только в предстоящей Netty 3.5 (3 филиала) и Netty 4 (главная ветвь).

Приведен пример usage.

Если вам нужно использовать его сейчас, вы можете просто скопировать файлы, упомянутые в этом pull request, в пространство имен проектов и использовать его.

Надеюсь, это поможет.

+0

Я попытался заархивировать обновления, но застрял в решении SeekAheadOptimize, который, я считаю, должен быть в HttpPostBodyUtil. Есть ли загружаемый файл jar из этих резервных копий. или git для получения файлов с обратным переносом. Благодарю. – lawal

+0

Вот что я сделал. https://github.com/mashupbots/socko/tree/master/socko-webserver/src/main/java/org/mashupbots/socko/postdecoder. – Veebs

+0

Планирование, чтобы избавиться от него, как только 3.5 был выпущен. – Veebs

Смежные вопросы