日常提交
This commit is contained in:
@@ -356,8 +356,43 @@ public String handle(@SessionAttribute User user) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
#### Multipart
|
#### Multipart
|
||||||
在MultipartResolver被启用之后,
|
在MultipartResolver被启用之后,Post请求体中为multipart/form-data格式的数据将被转化并可以作为handler method的参数访问。如下显示了文件上传的用法:
|
||||||
|
```java
|
||||||
|
@Controller
|
||||||
|
public class FileUploadController {
|
||||||
|
|
||||||
|
@PostMapping("/form")
|
||||||
|
public String handleFormUpload(@RequestParam("name") String name,
|
||||||
|
@RequestParam("file") MultipartFile file) {
|
||||||
|
|
||||||
|
if (!file.isEmpty()) {
|
||||||
|
byte[] bytes = file.getBytes();
|
||||||
|
// store the bytes somewhere
|
||||||
|
return "redirect:uploadSuccess";
|
||||||
|
}
|
||||||
|
return "redirect:uploadFailure";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
> 在上述代码中,可以将MultipartFile改为List\<MultipartFile\>来解析多个文件名
|
||||||
|
> **当@RequestParam没有指定name属性并且参数类型为Map<String,MultipartFile>或MultiValueMap<String,MultipartFile>类型时,会根据name自动将所有匹配的MultipartFile注入到map中**
|
||||||
|
|
||||||
|
#### @RequestBody
|
||||||
|
可以通过@RequestBody注解读取请求体内容,并且通过HttpMessageConverter将内容反序列化为Object。具体使用方法如下:
|
||||||
|
```java
|
||||||
|
@PostMapping("/accounts")
|
||||||
|
public void handle(@RequestBody Account account) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
#### HttpEntity
|
||||||
|
将参数类型指定为HttpEntity与使用@RequestBody注解类似,其作为一个容器包含了请求体转化后的对象(account实例)和请求头(HttpHeaders)。其使用如下:
|
||||||
|
```java
|
||||||
|
@PostMapping("/accounts")
|
||||||
|
public void handle(HttpEntity<Account> entity) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user