el-upLoad 文件上传(图片,excel)

222 阅读1分钟
<el-upload
        drag 
        action="#" 
        :before-upload="beforeAvatarUpload"
        :http-request="uploadImage" 
        :on-success="handleAvatarSuccess"
        :show-file-list="false"
        :limit="1"
        :accept="accept">
        <div style="margin: 0 auto;margin-top: 60px;">
        <div class="el-upload__text">将文件拖到此处,或点击打开选择文件导入</div>                     <div class="upload__type">支持扩展名:.xls .xlsx</div>
        </div>
        </el-upload>

在data中声明一个变量
需要上传什么格式就在这里写什么格式
比如说是excel:accept:'.xls,.xlsx' 如果需要上传图片格式
图片:accept:'.jpg,.jpeg,.png'
也可以直接写在el-upload中accept的属性中,就可以省略声明变量这个步骤
:http-request :http-request这个属性中是自定义上传方法,也就是如果需要调用后端接口,方法就写在这个里面
代码如下:

uploadImage(file) {
      var formData = new FormData()
     // formData.append() 这个方法中可以自定义上传一些后端需要的参数
      formData.append('file', file.file)
      var requestConfig = {
        headers: {
          'Content-Type': 'multipart/form-data'
        },
      }
      // this.loading  = true
      this.$message.error('图片正在上传中,请稍后');
      //这里就是自定义的接口
      this.$axios.post(this.uploadURL, formData, requestConfig)
        .then((res) => {
          this.temp.imgName = res.data.fileName
          this.$message.success(res.data.msg)
          this.loading = false
        }).catch((res)=>{
          this.$message.error(res.msg)
        })
    },

:on-success
:on-success 这个方法中 就是上传成功以后做的事情

代码如下:

handleAvatarSuccess(res, file) {
      this.$message.warning('上传成功')
      },

:before-upload :before-upload 这个方法 就是在咱们上传之前做的一些事情了,校验文件格式或大小等等

代码如下:

beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 50;

        let fileName = file.name || ''
        // .xsl 转小写
        let type = fileName.slice(fileName.lastIndexOf('.')).toLocaleLowerCase()
        if (!this.accept.includes(type)) {
          this.$message.error('上传文件只能是excel格式!');
      
          return false
        }
        if (!isLt2M) {
          this.$message.error('上传文件大小不能超过 50MB!');
          return false
        }
        return true;
      },
  到这里,上传就做完啦!