前端使用vue
const formData = new FormData()
formData.append('file', imgFile)
formData.append('name', 'file')
formData.append('filename', fileName)
后端代码
@PostMapping("/upload")
public ResultVo upload(MultipartFile file, FormData formData, HttpServletRequest request) throws Exception{
try {
System.out.println(formData.toString());
log.info(file.getName());
log.info(file.getContentType());
log.info(file.getOriginalFilename());
return ResultVo.success();
}catch (IllegalStateException e){
log.error("错误信息" + e.getMessage());
throw new Exception("文件上传异常");
}
}
错误信息
或者
write javaBean error, fastjson version 1.2.54, class org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile, write javaBean error, fastjson version 1.2.54, class org.springframework.web.multipart.MultipartFileResource, fieldName : resource
意思是json工具序列化失败了,然后和MultipartFile有关,
原因:
地址:https://github.com/alibaba/fastjson/issues/3505
解决办法就是再封装一层就可以了
直接把他封装到接收的对象里面
@Data
public class FormData {
@JSONField(serialize = false)
private MultipartFile file;
private String name;
private String filename;
}
@PostMapping("/upload")
public ResultVo upload(FormData formData, HttpServletRequest request) throws Exception{
try {
System.out.println(formData.toString());
log.info(formData.getFile().getName());
log.info(formData.getFile().getContentType());
log.info(formData.getFile().getOriginalFilename());
return ResultVo.success();
}catch (IllegalStateException e){
log.error("错误信息" + e.getMessage());
throw new Exception("文件上传异常");
}
}
这样就能够正常的获取了
这个确实有点坑,还是记录一下