前端
<el-upload :action="uploadPic(scope.row.id)"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:show-file-list="false"
name="avatar"
>
<el-button size="small">更新图片</el-button>
</el-upload>
后端
public Object updateSingerPic(@RequestParam("avatar") MultipartFile file, @RequestParam("id") int id) {
String fileName = System.currentTimeMillis() + file.getOriginalFilename();
String filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "img"
+ System.getProperty("file.separator") + "singerPic";
File file1 = new File(filePath);
if (!file1.exists()) {
file1.mkdir();
}
}
在网上搜索的结果是前端输出的默认名称是file,但是不论修改name值还是不修改,后端接收到的都是null
@RequestParam("avatar") MultipartFile file, @RequestParam("id") int id
这看上去 也是不 file 是 avatar 啊?看了后面铁子的回答,确实啊,params 一般是用来取 get 请求的参数的,你文件得用 body。这里涉及到了 content-type 相关的知识,常见的有下面三种:
更多类型可以看我的文章 前端培训-初级阶段-场景实战(2019-06-06)-Content-Type对照表及日常使用