vue+element-ui+axios上传excel文件

1.不要使用自己封装的方法,拦截器会修改参数,直接使用最纯净的axios

 
          点击上传

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("请输入完整再提交");
            }
          });
      }
    },
}

你可能感兴趣的:(vue+element-ui+axios上传excel文件)