elementUI实现上传excel文件并传给后端

我们选择一个按钮来实现上传,点击上传按钮,可从本地选择文件上传,确定后传递给后端。

首先,封装一个按钮:

                    <el-upload
                        style="display: inline-block"
                        action="string"
                        :limit="1"
                        :file-list="fileList"
                        :on-error="loadFileError"
                        :on-success="loadFileSuccess"
                        :before-upload="beforeUpload"
                        accept=".xlsx,.xls"
                        :show-file-list="false"
                        :http-request="uploadFile"
                    ><el-button type="primary" plain>导入关联商品</el-button></el-upload>

我们来看一下这里面的每个属性的作用:

limit: 代表一次可上传的文件数量
file-list: 代表自己定义的属性
on-error: 代表导入文件失败的时候提示的方法
on-success:代表导入文件成功提示的方法
before-upload:代表在上传前检查文件的格式、数据大小、信息等,判定文件是否能够上传
show-file-list:代表是否显示文件列表,false不显示
http-request:本次用来进行上传给后端的方法

接下来是script部分:

定义属性:

export default {
  name: "conferenceSignCard",
  data() {
    return {
      fileList: [], // 导入的文件
    };
  },
}

导入文件失败的提示方法:

    // 导入失败,其中$message为elementui的消息提醒组件
    loadFileError() {
      this.$message({
        message: "文件上传失败!",
        type: "error",
      });
    },

导入文件成功的提示方法:

    loadFileSuccess() {
      this.$message({
        message: "文件上传成功!",
        type: "success",
      });
    },

格式校验:上传前检查文件格式、数据大小等信息,判断是否能够上传。这里可导入xlsx和xls文件格式。

    // 导入前检查文件
    beforeUpload(file) {
      const extension = file.name.split(".")[1] === "xls";
      const extension2 = file.name.split(".")[1] === "xlsx";
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!extension && !extension2) {
        this.$message({
          message: "上传模板只能是 xls、xlsx格式!",
          type: "error",
        });
      }
      if (!isLt2M) {
        console.log("上传模板大小不能超过 2MB!");
        this.$message({
          message: "上传模板大小不能超过 2MB!",
          type: "error",
        });
      }
      return extension || extension2 || isLt2M;
    },

传递给后端的方法:

    uploadFile(param){
      const File = param.file;
      let formDataInfo = new FormData();
      formDataInfo.append("file", File);
      loadConferenceFile(formDataInfo).then((res) => {
          this.$message({
            message: res.data,
            type: "success",
          });
      });
    },
loadConferenceFile(formDataInfo){
    return axios.post("/signCard/loadConferenceFile",formDataInfo)
  }

完成!

参考文章:

elementUI加springboot实现上传excel文件给后端并读取excel_前端上传excel文件给后端可以吗-CSDN博客

要使用 ElementUI 上传文件后端,您需要: 1. 配置上传组件 ``` <el-upload class="upload-demo" action="/your/upload/api" :auto-upload="false" :on-change="handleChange"> <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button size="small" type="success" @click="upload">上传到服务器</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> ``` 2. 在Vue.js实例中编写上传方法 ``` methods: { handleChange(file, fileList) { // file: 当前操作的文件对象 // fileList: 已上传文件列表 }, upload() { const formData = new FormData(); // 获取上传组件中的所有文件 this.$refs.upload.uploadFiles.forEach(file => { // 将文件添加到formData中 formData.append('file', file.raw); }); // 发送POST请求,将formData上传后端 axios.post('/your/upload/api', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { // 处理响应结果 }).catch(error => { // 处理异常情况 }); } } ``` 3. 在后端编写文件上传接口 根据您的后端实现方式不同,可能需要使用不同的技术栈和框架来编写文件上传接口。通常情况下,您需要在后端编写一个接收POST请求的API,将接收到的文件保存到指定的目录中,并返回上传成功的响应结果。 以上是一个简单的 ElementUI 文件上传后端的示例,您可以根据您的实际需求进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值