1.不要使用自己封装的方法,拦截器会修改参数,直接使用最纯净的axios
<el-upload
ref="upload"
action
accept=".xlsx"
:limit="limit"
:auto-upload="false"
:before-upload="beforeUpload"
:on-change="handleChange"
:on-remove="handleRemove"
:on-exceed="handleExceed"
:on-success="handleSuccess"
:on-error="handleError"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
import axios from "axios";
methods: {
// 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
beforeUpload(file) {
let extension = file.name.substring(file.name.lastIndexOf(".") + 1);
let size = file.size / 1024 / 1024;
if (extension !== "xlsx") {
this.$message.warning("只能上传后缀是.xlsx的文件");
}
if (size > 10) {
this.$message.warning("文件大小不得超过10M");
}
},
// 文件状态改变
handleChange(file, fileList) {
if (file) {
this.fileList = fileList.slice(-3);
}
},
// 删除文件
handleRemove(file, fileList) {
this.fileList = [];
},
// 文件超出个数限制
handleExceed(files, fileList) {
this.$message.warning(
`只能选择1个文件,当前共选择了 ${files.length + fileList.length} 个`
);
},
// 文件上传成功
handleSuccess(res, file, fileList) {
this.$message.success("文件上传成功");
},
// 文件上传失败
handleError(err, file, fileList) {
this.$message.error("文件上传失败");
},
async nextStep() {
if (this.fileList.length === 0) {
this.$message.warning("请点击上传文件,添加文件");
} else {
let dataEx = new FormData();
//可以打印出fileList[0].raw就是需要上传的文件(File类型),由于限定了只能上传一个文件,所以取数组的第一个
let batch_file = this.fileList[0].raw;
// FormData的append方法,引号里的是后端定义的字段
dataEx.append("batch_file", batch_file);
const instance = axios.create({
withCredentials: true, // 一定要加这个,不用设置什么请求头
});
instance.post(
"http://192.168.0.1/:8080/api/upload",
dataEx
)
.then((res) => {
if (res.code == 200) {
alert("提交成功");
} else {
alert("请输入完整再提交");
}
});
}
},
}