我正在使用Spring 3的MVC框架,主要仅用于注释。
例如,用户将上传类似:
的内容------------------------------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());
}
它打印出一个空列表,因为Spring已经使用了Parts InputStream进行自己的处理。这是因为我使用的是MultipartResolver,这是我需要的。
我的问题是,我仍然需要访问这些部分。我无法使用@RequestPart
注释,因为在处理完data
部分之前,我不会知道部件的名称。我需要能够以编程方式向Spring请求其中一个部分,而不是作为函数的参数。
提前致谢。
答案 0 :(得分:2)
我找到了解决方案。我正在使用@RequestPart("media") final List<MultipartFile> media
。所有作为二进制(媒体)数据的部分都具有名称“media”,其文件名是其唯一标识符。
我仍然喜欢@RequestPart final Map<String, MultipartFile> media
,但我会承认在这一点上它只是语法糖。