VUE的三方库axios用ajax传图片给后台把联调不对的整疯了!!!

我的图片格式
image.png
前端使用VUE对象里写axios三方库用ajax传图片给后台
image.png
后台主要参数代码

@ApiParam("file")MultipartFile file,  
@RequestParam("type") int type

主要出现过:前端400错误和后台接收到post请求但是内容为null的报错情况。
个人觉得ajax的可能没写对,或则图片这样传不合适,需要改变一下格式。
这是原VUE的axios三方库用post方法案例,我理解错了,附在这里。
image.png

阅读 2.5k
3 个回答

试下下面的方法:
1:file文件只能formData传输,后台接收。
2:请求头headers需要设置form-data;
3:files字段是否固定,固定就自取名称,然后传file文件给后台即可

send(img){
    let formData = new FormData();
    formData.append('files', img);
    axios({
        method:"POST",
        url:this.url,
        data:formData,
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    }).then(response => {
        console.log('成功返回数据:', response)
    }).catch(error => {
        console.log('失败返回数据:', error)
    })
}

ajax 发文件要用 FormData 对象。

明白后找的相关资料得出结论:
用VUE对象里写axios三方库用ajax传文件给后台需要FormData 对象,但是正如axios三方库官方文件所说,post请求体中的数据为Request Payload,而非get中使用的FormData,导致了写法的困难,于是放弃,我转而使用了简单的能上传文件给后台的FormData对象完成功能,下面我罗列完整度高的案例博客,极具复制性。
https://www.jianshu.com/p/a6d...
https://www.jianshu.com/p/e98...

推荐问题