Vue:使用elementUI upload组件上传excel文件

Posted 前端白雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue:使用elementUI upload组件上传excel文件相关的知识,希望对你有一定的参考价值。

Vue:使用elementUI upload组件上传excel文件

elementUI官方的upload组件文档可点此查看
页面效果如下所示,支持文件的二次确认上传

 

 

demo中仅以excel举例,若需要支持其他格式,可修改accept值,具体代码如下:

<template>
  <div>
      <el-upload drag
           :limit=limitNum
           :auto-upload="false"
           accept=".xlsx"
           :action="UploadUrl()"
           :before-upload="beforeUploadFile"
           :on-change="fileChange"
           :on-exceed="exceedFile"
           :on-success="handleSuccess"
           :on-error="handleError"
           :file-list="fileList">
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        <div class="el-upload__tip" slot="tip">只能上传xlsx文件,且不超过10M</div>
      </el-upload>
  <br/>
  <el-button size="small" type="primary" @click="uploadFile">立即上传</el-button>
  <el-button size="small">取消</el-button>
  </div>
</template>

<script>
  export default 
    data() 
      return 
        limitNum: 1,  // 上传excell时,同时允许上传的最大数
        fileList: [],   // excel文件列表
      
    ,
    methods:
      // 文件超出个数限制时的钩子
      exceedFile(files, fileList) 
        this.$message.warning(`只能选择 $this.limitNum 个文件,当前共选择了 $files.length + fileList.length 个`);
      ,
      // 文件状态改变时的钩子
      fileChange(file, fileList) 
        console.log(file.raw);
        this.fileList.push(file.raw) ;
        console.log(this.fileList);
      ,
      // 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
      beforeUploadFile(file) 
        console.log(\'before upload\');
        console.log(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\');
        
      ,
      // 文件上传成功时的钩子
      handleSuccess(res, file, fileList) 
        this.$message.success(\'文件上传成功\');
      ,
      // 文件上传失败时的钩子
      handleError(err, file, fileList) 
        this.$message.error(\'文件上传失败\');
      ,
      UploadUrl:function()
       // 因为action参数是必填项,我们使用二次确认进行文件上传时,直接填上传文件的url会因为没有参数导致api报404,所以这里将action设置为一个返回为空的方法就行,避免抛错
        return ""
      ,
      uploadFile() 
        if (this.fileList.length === 0)
          this.$message.warning(\'请上传文件\');
         else 
          let form = new FormData();
          form.append(\'file\', this.fileList);
          this.$axios(
            method:"post",
            url: "/statistical/uploadbug",
            headers:
              \'Content-type\': \'multipart/form-data\'
            ,
            data:form
          ).then(
            res=>

            ,err =>
            );
        
      

    
  
</script>

<style scoped>

</style>

 

以上是关于Vue:使用elementUI upload组件上传excel文件的主要内容,如果未能解决你的问题,请参考以下文章

Vue项目导入excel表,自动下载导入失败数据的excel表(使用ElementUI upload组件,自定义导入excel表)

Vue 使用elementUI upload 删除图片/移除图片的方法

vue + elementui upload上传图片到服务器以及保存后回显问题

elementUI+el-upload 上传文件大小与文件类型校验

vue 使用element-ui的el-upload httprequest实现上传文件到后台的功能

vue + elementUI——upload传数据给后台出错后再次点击upload无效