vue 借用element-ui实现头像上传 axios发送请求

时间:2021-09-13 06:06:44

 <!-- 上传组件 -->
    <!-- 总结一下:
   action 写图片上传请求的路径 去路径哈 show-file-list就是当你上传时,是否会显示出上传的是哪一个图片,一般为false handleAvatarSuccess它是成功的回调 beforeAvatarUpload:上传之前做的一些事情
在本页面中你不点击按钮 图片也会显示出来 element-ui中的上传组件 在action时,写了上传地址,当你选择好图片,就自动帮你上传了

 

<template>
  <div>
 
    <el-upload class="avatar-uploader" action="http://127.0.0.1:666/login/upload" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"
    >
      <img v-if="avatarUrl" :src="avatarUrl" class="avatar" />

      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
    
//在本页面中你不点击按钮 图片也会显示出来 <el-button @click="saveAvatar">获取图片请求</el-button> <!-- 图片回显示 比如它回显在顶部头像,我放在这里是方便演示--> <div class="avatar"> <img width="100%" height="100%" :src="avatarUrl" alt /> </div> </div> </template>

 

<script> export default { data() { return { avatarUrl: "http://127.0.0.1:8080/avatar.jpg" //默认头像
 }; }, methods: { // 上传成功的函数
 handleAvatarSuccess(res, file) { // 上传成功 回显图片
      this.avatarUrl = URL.createObjectURL(file.raw); console.log(URL.createObjectURL(file.raw)); }, // 上传之前的限制函数
 beforeAvatarUpload(file) { // 类型
      const isJPG = file.type === "image/jpeg"; // 大小
      const isLt2M = file.size / 1024 / 1024 < 2; // 类型限制
      if (!isJPG) { this.$message.error("上传头像图片只能是 JPG 格式!"); } // 大小限制
      if (!isLt2M) { this.$message.error("上传头像图片大小不能超过 2MB!"); } return isJPG && isLt2M; }, // 回去头像的请求
 getAvatar() { this.req .get("/login/getavatar") .then(response => { let data = response.data; this.avatarUrl =
            "http://127.0.0.1:666"   data[data.length - 1].imgUrl; // console.log(data[data.length - 1].imgUrl);
 }) .catch(err => { console.log(err); }); } }, created() { // 获取头像
    this.getAvatar(); } }; </script>

 

<style lang="less" 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>

 

vue 借用element-ui实现头像上传 axios发送请求