美文网首页
vue+element-ui+axios上传excel文件

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

作者: 小虾米前端 | 来源:发表于2020-08-13 10:04 被阅读0次

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

相关文章

网友评论

      本文标题:vue+element-ui+axios上传excel文件

      本文链接:https://www.haomeiwen.com/subject/qkiynctx.html