1. 问题
使用ele-plus中的el-upload的组件传文件的时候,有后端收不到文件的问题。
2. 解决
搜的解决方案是,使用axios发送请求的时候,在请求头中加上'Content-Type': 'multipart/form-data'(较新版本的axios会自己判断),我加了之后也没解决,在弄了好长一段时间后,想起来自己在封装了一层request,用于token的校验
import axios from "axios"; //引用axios
import { useUserStore } from '../stores/useUserStore'
axios.defaults.timeout = 5000
axios.defaults.baseURL = "http://localhost:8080"
const service = axios.create({
timeout: 5000,
baseUrl: "http://localhost:8080" // 我们在请求接口的时候就不同写前面 会自动我们补全
})
/**请求拦截器 */
service.interceptors.request.use(
config => {
const {getUserInfo} = useUserStore()
const token = getUserInfo().token
config.data = JSON.stringify(config.data); // 这里我们也可以在过滤下 请求参数数据
config.headers = {
// 设置请求头
"Content-Type": "application/json"
};
if (token) {
config.headers.token = token; //存在的话 就携带 token
}
return config; //然后把配置返回
},
err => {
console.log(err) //如果出错的话 打印出来错误看看
}
);
/**响应拦截器 */
service.interceptors.response.use(
response => {
return response;
},
err => {
if(err.response.status === 401){
window.location.href = "/login"
}
}
);
export default service;
这里的请求头中的 "Content-Type": "application/json",无论在外面修改成怎么样,它的content-type都是 “applicantion-json”,所以后端也就收不到发送的请求。
3. 总结
纯属自己的问题。。。。。。