day06 ---(05)添加讲师上传头像(前端)

1、整合上传组件

day06 ---(05)添加讲师上传头像(前端)_第1张图片
day06 ---(05)添加讲师上传头像(前端)_第2张图片

2、在页面添加组件代码

<!-- 讲师头像 -->
      <el-form-item label="讲师头像">
        <!-- 头衔缩略图 -->
        <pan-thumb :image="eduTeacher.avatar"/>
        <!-- 文件上传按钮 -->
        <el-button type="primary" icon="el-icon-upload" @click="imagecropperShow=true">更换头像</el-button>

        <!--
v-show:是否显示上传组件
:key:类似于id,如果一个页面多个图片上传控件,可以做区分
:url:后台上传的url地址
@close:关闭上传组件
        @crop-upload-success:上传成功后的回调-->
        <image-cropper
          v-show="imagecropperShow"
          :width="300"
          :height="300"
          :key="imagecropperKey"
          :url="BASE_API+'/eduoss/fileoss/fileUpload'"
          field="file"
          @close="close"
          @crop-upload-success="cropSuccess"
        />
      </el-form-item>

3、编写js代码

(1)引入组件

import ImageCropper from '@/components/ImageCropper'
import PanThumb from '@/components/PanThumb'

(2)在vue对象里添加组件

export default {
  components: { ImageCropper, PanThumb },
  data() {
......

(3)在data中添加属性

data() {
    return {
      id: "",
      eduTeacher: {},
      saveBtnDisabled: false,

      BASE_API: process.env.BASE_API, // 接口API地址
      imagecropperShow: false, // 是否显示上传组件
      imagecropperKey: 0 // 上传组件id
    };
  },

(5)访问报错
day06 ---(05)添加讲师上传头像(前端)_第3张图片
需要配置Nginx解决。

4、配置Nginx

(1)Nginx三大主要功能

反向代理、负载均衡、动静分离

(2)安装nginx
day06 ---(05)添加讲师上传头像(前端)_第4张图片
解压既可用
Nginx下载地址:https://download.csdn.net/download/qq_39311377/12546901

5、如何使用nginx

(1)原理
day06 ---(05)添加讲师上传头像(前端)_第5张图片
(2)修改nginx中nginx.conf中的配置

server {
        listen       9001;
        server_name  localhost;

    location ~ /eduservice/ {           
        proxy_pass http://localhost:8001;
    }
    location ~ /eduuser/ {           
        proxy_pass http://localhost:8001;
    }
    location ~ /eduoss/ {           
        proxy_pass http://localhost:8002;
}
}

6、启动

day06 ---(05)添加讲师上传头像(前端)_第6张图片
day06 ---(05)添加讲师上传头像(前端)_第7张图片
注意:必须要有两个及以上进程才算正常,一个主线进程,一个分支进程。

7、修改前端配置文件dev.env.js,重启生效

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  //BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
  //BASE_API: '"http://localhost:8001"',
  BASE_API: '"http://localhost:9001"',//nginx,由nginx进行转发
})

8、页面js方法实现

//上传成功后回调方法
    cropSuccess(data){
      console.log(data);
      this.imagecropperShow = false
      this.eduTeacher.avatar = data.url
      // 上传成功后,重新打开上传组件时初始化组件,否则显示上一次的上传结果
      this.imagecropperKey = this.imagecropperKey + 1
    },
    close(){
      this.imagecropperShow = false
       // 上传成功后,重新打开上传组件时初始化组件,否则显示上一次的上传结果
      this.imagecropperKey = this.imagecropperKey + 1
    }

9、页面显示

day06 ---(05)添加讲师上传头像(前端)_第8张图片

你可能感兴趣的:(在线教育项目)