Я использую структуру MVC Spring 3, в основном только для аннотаций.Spring 3 MVC и Multiparts
В качестве примера, пользователь будет загружать что-то вроде:
------------------------------6526f0c735cd
Content-Disposition: form-data; name="data"
[
{
"someField":"foo",
"someNestedObject":{
"someDeeperField":"bar",
"someResourceField":"25f33030-12ed-4636-b5f7-759d27c40f08"
...
}
},
...
]
------------------------------6526f0c735cd
Content-Disposition: form-data; name="25f33030-12ed-4636-b5f7-759d27c40f08"; filename="some.jpg"
Content-Type: image/jpeg
<Binary Data>
Обратите внимание, что название второй части является частью данных в первой части. Тогда мой код выглядит следующим образом:
@RequestMapping("test")
public static @ResponseBody void test(
@RequestParam("data") final String data,
final HttpServletRequest request)
throws Exception {
System.out.println(request.getParts());
}
Он печатает пустой список, потому что весна уже поглотила InputStream частей для собственной переработки. Это потому, что я использую MultipartResolver, и это то, что мне нужно.
Моя проблема в том, что мне по-прежнему нужен доступ к частям. Я не могу использовать аннотацию @RequestPart
, потому что я не буду знать названия частей до тех пор, пока не обработаю часть data
. Мне нужно просить Spring для одной из частей программно, а не аргумент функции.
Заранее спасибо.
Я только узнал, что у вас может быть такой параметр, как «@RequestParam final Map params', что очень приятно. К сожалению, вы не можете сделать финальную карту @RequestPart Map parts'. –
jojenki
Возможно, вы должны добавить свой комментарий как ответ и принять его. Подход выглядит хорошо. –
Я думаю, вы неправильно поняли это, или я не был ясен. '@RequestPart final Map детали' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ И окончательная карта @RequestParam Map params' не дает мне доступ к частям. –
jojenki