將一部分編組到一個物件中
如果要將零件的內容轉換為域物件(例如 User
或 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
必須是 Spring 能夠處理的部件。也就是說,如果你可以使用Content-Type
執行POST
到foo/bar
,並且 Spring 能夠將其轉換為物件,那麼它也可以將一個部件編組到一個物件中。 - 你必須能夠設定零件的
Content-Type
。如果你不能,這種方法將無法工作 - Spring 不會嘗試猜測該部分的Content-Type
。