但要在form表单中上传文件时,我们使用 SpringBoot 可以减少我们的配置流程。而在这里配置只需要配置成这样就好
public String upload(
@RequestPart("wallpaperInputFile") MultipartFile wallpaperInputFile,
@RequestPart("photos") MultipartFile[] photos) throws IOException {}
我们直接使用参数接收,在视图部分用file属性的input标签发送请求即可。
但是,有时候我们会遇到511报错?亦可以说是:
Current request is not a multipart request
下图这个报错:
这是为什么?
在发送带文件的请求时,请求头的信息应该是multipart/form-data。
出现这样的报错,多半是前端没有默认请求头。
而发掘请求的相关参数,也确实可以看到请求头是不符合文件上传要求的。
既然了解了bug从何而来,那么解决思路就清晰了,说到底不就是请求头不规范嘛。
在视图的form表单标签上,加上限定请求头的信息。
也就是:enctype=”multipart/form-data”
该属性就可以限定发起请求时的请求头
但如果这样还不能解决Bug…那接下来处理控制器部分
实际上,@xxxMapping 注解是有规定请求头的参数的,我们只需设定这个参数即可。
Consumes 属性,也可以用来限定请求头信息,后面的常量就是请求头的信息。
点进常量一看就可以发现SpringBoot已经给我们封装好了。直接使用即可
当视图和控制器部分都追加了请求头的限定信息,那自然bug就完成了。
如图可见,请求状态码正常,请求头信息已经更改。