spring-mvc 将部件编组为对象

例子

如果你想将一个部分的内容转换成一个域对象(例如 aUser或Account或Address),那么过程非常简单:

可以上传多个部分,每个部分都有不同的名称。对于每个零件名称,您需要一个用 注释的参数@RequestPart,其名称与零件名称匹配。

要接收通过 HTTP Post 上传的文件,您需要执行以下操作:

@RequestMapping(
    value = "...",
    method = RequestMethod.POST,
    consumes = MediaType.MULTIPART_FORM_DATA_VALUE
)
public Object uploadFile(
    @RequestPart Address address,
) {
    .
    .
    .
}

作为原始 HTTP 请求:

POST /... HTTP/1.1
Host: ...
Content-Type: multipart/form-data; boundary=----------287032381131322

------------287032381131322
Content-Disposition: form-data; name="address"; filename="address.json"
Content-Type: application/json

{"houseNumber": "10/A", "streetName": "Dumbldore Road", "town": "Hogsmede"}
------------287032381131322--

最重要的是:

  • 零件名称必须与变量名称匹配。

  • 该Content-Type部分必须是一个春天将能够应付,如果你送了它作为一个普通的请求。也就是说,如果你能执行POST与一个端点Content-Type的foo/bar,和Spring能够将其转换成一个对象,那么它也将能部分进入编组的对象。

  • 必须能够设置Content-Type零件的 。如果不能,这种方法将不起作用 - Spring不会尝试猜测Content-Type部件的 。