今天写一个需求,前端用axios上传图片,后端Springmvc如何接受图片呢,我的MultipartFile一直为空,在网上查了无数的数据,看到的都是什么
(1)前端发送的时候要加 content-type 啊
(2)后端要写@RequestParam注解啊 什么什么的
一点用都没有 简直!
下面来说说如何解决:
(1)前端只需要正常操作发送请求即可,下面是我的代码
imgAdd(pos, $file){
// 第一步.将图片上传到服务器.
var formdata = new FormData();
formdata.append('upload', $file);
axios({
url: '你的请求地址',
method: 'post',
data: formdata,
headers: { 'Content-Type': 'multipart/form-data' },
}).then((url) => { //这里根据自己具体需求即可
this.$refs.md.$img2Url(pos, url);
})
},
后端接收代码(重点重点)
这里后端正常写了Controller层的代码之后 一定要去applicationContext.xml 配置一个bean 用来解析分段上传图片的数据!!!这才是重点
加上这一句!!!直接 200(成功) 500不存在的!!! 淦
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
下面是我的后端代码
@RequestMapping("upload")
@ResponseBody
public String SpringMVCUpload(MultipartFile upload) throws IOException {
System.out.println("文件上传...");
System.out.println(upload);
String realPath = "C:/Uploads/";
File file = new File(realPath);
if(!file.exists()){
file.mkdirs();
}
UUID uuid = UUID.randomUUID();
String Filename = uuid.toString().replace("-","")+upload.getOriginalFilename();
upload.transferTo(new File(realPath,Filename));
String imgPath = "C:/Uploads/" + Filename;
System.out.println(imgPath);
return imgPath;
}