vue +element + 导入表格( 导入的表格传给后台 form-data 格式 )

此处介绍2中使用方法,第1种方法更简单
第一种:

<template>
  <div>
     <el-upload class="upload-demo" :action="importExcel" :on-success="uploadSuccess" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" :show-file-list="false">
         <el-button size="mini" type="primary">导入</el-button>
     </el-upload>
  </div>
 </template>
<script>
import { importExcel } from "@/apis/apis";
export default {
  data() {
    return {
    	importExcel, 
    }
  },
  methods:{
   //  上传表格成功
    uploadSuccess(res) {
      // console.log(res)
      if (res.code === 0) {
        this.$message.success('上传成功')
        // 导入数据之后,需要调用接口,刷新数据
      } else {
        this.$message.error(res.message)
      }
    },
  }
}
</script>

在 apis —> apis.js中

// 导入表格
export const importExcel = process.env.BASE_URL + "/net/account/importUser";

下方是我微信公众号的二维码,可以扫码关注以下,后期博文推送主要在公众号上面,有什么问题也可以通过公众号跟我发消息哦~
在这里插入图片描述

第二种:

<template>
  <div>
      <el-upload class="upload" action="#" :show-file-list="false" :on-change="handleExcel" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" :auto-upload="false">
      <img src="@/assets/images/import.png" alt />
      导入考生信息
    </el-upload>
  </div>
 </template>
 
<script>
import { importUserInfo} from "@/apis/apis";
export default {
  methods: {
    //导入表格
    handleExcel(file) {
      let formData = new FormData(); //声明一个FormDate对象
      formData.append("file", file.raw);    //把文件信息放入对象中
      
      //调用后台导入的接口
      importUserInfo(formData).then(res => {
        // console.log(res)
        if (res.code == 0) {
          this.getList();   // 导入表格之后可以获取导入的数据渲染到页面,此处的方法是获取导入的数据
        } else {
          this.$message.error(res.message)
        }
      }).catch(err => {
        that.$message({
          type: 'error',
          message: '导入失败'
        })
      })
    },
  }
}

注:
如果是导入的表格要传给后台 form-data 格式,则 要在请求头里把请求头 Content-Type 设置成 ‘multipart/form-data;charset=UTF-8’
在 apis.js里:

//apis.js
// 导入信息
export const importUserInfo= function(params) {
  let url = "/xxx/xxx/xxx/xxx";
  return https(url, params, "post", "form-data");
};

在axios.js
在post请求加上如下代码:

      if (method === 'post') {

        if (headerType === "json") {
            axios.defaults.headers["Content-Type"] = 'application/json;charset=UTF-8'
            data = params
        }   
        else if(headerType == "form-data"){
            axios.defaults.headers["Content-Type"] = 'multipart/form-data;charset=UTF-8'
            data = params;
        }
        else {
            axios.defaults.headers["Content-Type"] = 'application/x-www-form-urlencoded;charset=UTF-8'
            data = Qs.stringify(params);
        }
    }

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值