Vue、Element、JAVA下使用upload上传文件并带参数传给后端
<el-upload
class="upload-demo"
:action="uploadUrl+'/fly/uavAsset/upload'"
:data="groupId"
:show-file-list="false"
:headers="headers"
:on-success="onSuccess"
:before-upload="beforeAvatarUpload">
带入参数groupID,请求参数的格式如下为
此时后端如果使用@RequestBody接收会报出
org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘multipart/form-data;boundary=----WebKitFormBoundarywY7ByvgonAjDoaCT;charset=UTF-8’ not supported
@RequestBody表示将JSON或XML数据与DTO bean映射一起使用。如果是MultipartFile,则不能使用JSON数据,因此不能使用@RequestBody。应该使用@ModelAttribute如下
public ExcelResult uploadExcel(@ModelAttribute UploadDto uploadDto) {}
@Data
public class UploadDto {
private MultipartFile file;
private Integer groupId;
}
这样就后端就能够接收到MultipartFile 和 json 参数啦