vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > el-upload 上传组件

el-upload 文件上传组件的使用讲解

作者:前端初见

Upload 上传文件这个功能是我们在企业实际开发当中使用频率是非常高的这样一个文件上传的功能,element ui组件组也给我们提供了上传的组件,本文给大家介绍el-upload 文件上传组件的使用,感兴趣的朋友跟随小编一起看看吧

Upload 上传文件

element-ui官网
element ui=>upload上传组件
Upload 上传文件这个功能是我们在企业实际开发当中使用频率是非常高的这样一个文件上传的功能,,element ui组件组也给我们提供了上传的组件。所有我们一定要熟悉掌握它

使用之前先进行一下element ui的安装和配置

打开终端=>输入npm i element-ui -S

npm i element-ui -S

就拿其中的一个拖拽上传一个例子进行说说吧


el-upload拖拽上传官网源代码

<el-upload
  class="upload-demo"
  drag
  action="https://jsonplaceholder.typicode.com/posts/"
  multiple>
  <i class="el-icon-upload"></i>
  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

接下来咱们就创建一个vue组件进行使用和讲解

1.先搭建一个vue项目
vue项目搭建可以参考这篇文章
2.使用element-ui和创建vue组件
配置element-ui
main.js

import Vue from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import store from './store'
// 引入element ui
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false
Vue.use(ElementUI);
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

创建一个组件,用于放el-upload
upload.vue,首先先把element的组件放进来,接下来再进行更改配置

<template>
  <div>
    <el-upload class="upload-demo" drag action="https://jsonplaceholder.typicode.com/posts/" multiple>
      <i class="el-icon-upload"></i>
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
      <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
    </el-upload>
  </div>
</template>
<script>
export default {
  data() {
    return {
    }
  }
}
</script>
<style scoped></style>

展示upload组件,为了方便我就不配置路由了,直接在App.vue引入展示
App.vue

<template>
  <div id="app">
    <uploadView/>
  </div>
</template>
<script>
// 引入创建的upload.vue组件
import uploadView from './views/upload.vue'
export default{
  components:{
    uploadView
  }
}
</script>
<style scope>
</style>

首次展示效果

el-upload参数讲解

文件上传

使用el-upload组件完成,action 是后端地址,是后端请求的接口地址。
常用参数:

div的文字自己根据需求可以自行更改

图片上传

imgUpload图片上传组件封装

<template>
  <div>
    <!-- 图片上传 -->
    <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false"
      :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
      <img v-if="imageUrl" :src="imageUrl" class="avatar">
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
  </div>
</template>
<script>
export default {
  data() {
    return {
      imageUrl: ''
      // 接受我们上传图片的地址,上传成功以后给的地址
    };
  },
  methods: {
    // 上传成功的回调
    handleAvatarSuccess(res, file) {
      //demo 转换成url,后期可以换成后端给我们返回的地址
      this.imageUrl = URL.createObjectURL(file.raw);
      // 转化可以显示页面的地址,其实正常开发中已经可以拿到后端返回的地址,可以直接使用的
    },
    // 上传之前的回调
    beforeAvatarUpload(file) {
      // isJPG图片格式是否符合我们的规定
      const isJPG = file.type === 'image/jpeg';
      // isLt2M 文件大小是否符合我们的规定
      const isLt2M = file.size / 1024 / 1024 < 2; 
      if (!isJPG) {
        this.$message.error('上传头像图片只能是 JPG 格式!');
      }
      if (!isLt2M) {
        this.$message.error('上传头像图片大小不能超过 2MB!');
      }
      return isJPG && isLt2M;
    }
  }
}
</script>
<style scoped>
/* 图片上传样式 */
.avatar-uploader .el-upload {
  border: 1px dashed #d9d9d9;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.avatar-uploader .el-upload:hover {
  border-color: #409EFF;
}
.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  line-height: 178px;
  text-align: center;
}
.avatar {
  width: 178px;
  height: 178px;
  display: block;
}
</style>

把App.vue展示的组件替换为我们的imgUpload组件

<template>
  <div id="app">
    <!-- 文件上传 -->
    <!-- <uploadView/> -->
    <!-- 图片上传 -->
    <imgUpload/>
  </div>
</template>
<script>
// 引入创建的upload.vue组件
// 文件上传
import uploadView from './views/upload.vue'
// 图片上传
import imgUpload from './views/imgUpload.vue'
export default{
  components:{
    uploadView,
    imgUpload
  }
}
</script>
<style>
</style>

el-upload 常用属性

handlepreview (file)

on-remove 删除按钮=>对应一个回调,回调参数对应我们当前点击的删除的文件和剩余的文件列表 文件列表移除文件时的钩子

 handleremove (file,filelist)

更多的查看官网即可

踩坑

  globObj.$axios({
    url: url,
    method: 'post',
    transformRequest: [function(data, headers) {
      // 去除post请求默认的Content-Type
      delete headers['Content-Type']
      return data
    }],
    data: formData,
    timeout: 300000
  }).then(res => {
    ElMessage.success('资产添加成功');
  }).catch((err) => {
    console.log(err);
  });

如果还要传其他的参数,其他的参数必须也要append进去,否则可能会报参数错误。

const formData = new FormData();
formData.append('file', file);
// 其他参数
formData.append('mailSys', mailSys);

到此这篇关于el-upload 文件上传组件的使用的文章就介绍到这了,更多相关el-upload 上传组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文