Vue使用base64圖片驗證碼頁面顯示

簡述

1.需求:圖片中顯示隨機驗證碼,每次點擊圖片,圖片會刷新
2.第一次進入頁面時,在mounted中向后臺發起圖片請求
將后臺提供的base64格式的圖片,轉格式存在變量中,將變量綁定到img標簽的src屬性上。
3、點擊圖片時,向后臺發起請求

數據格式

數據格式

效果圖

效果圖

源碼

組件
<template>
  <el-form ref="registerFormRef" :model="registerForm" :rules="registerFormRules" label-width="80px">
       <el-form-item label="驗證碼" prop="code" class="code">
            <el-input style="width:400px;" v-model="registerForm.code" placeholder="請輸入驗證碼">
              <img slot="append" :src="changeImage" @click="handleClickImge" class="codeImage" />
            </el-input>
          </el-form-item>
</el-form>
</template>
<script>
  export default {
    data() {
      return {
        changeImage: '',
        //注冊對象
        registerForm: {
          code: '',
        },
      };
    },
    methods: {
      handleClickImge(){
            this.$axios.post('http://www.addres.com:9101/api/user/code/getCode').then(res => {
          this.changeImage = "data:image/jpeg;base64," + res.data.data;
          console.log(res)
        }).catch(err => {
          console.log(err)
          console.log("error");
        });
      },
    },
    mounted() {
      this.handleClickImge()  //加載刷新驗證碼
    }
  };
</script>

<style lang="less" scoped>
 //圖片校驗碼
  .codeImage {
    width: 110px;
    height: 34px;
    // border: 1px solid #007ACC;
  }
</style>

補充

由于發送驗證時無法準確定位是哪一個驗證碼,導致驗證失敗。后端修改加了一個識別碼:mcode或者key
以下還加了校驗請求


數據格式2
修改內容如下:
<script>
 import qs from 'qs'
  export default {
    data() {
//校驗請求
 const checkImageCode = (rule, value, callback) => {
        const param = {
          'code': value,
          'mcode': this.imageMcode
        }
        this.$axios.post('http://cn:9101/api/user/code/checkCode', qs.stringify(param)).then(res => {
      if (res.data.code == 10000) {
           this.$message.success(res.data.msg)
          }else{
             this.$message(res.data.msg)
          }
        }).catch(err => {
          console.log(err)
          console.log("error");
        });
      }
      return {
        changeImage: '',
     //驗證碼的識別碼
         imageMcode: '',
        //注冊對象
        registerForm: {
          code: '',
        },
      };
    },
    methods: {
      handleClickImge(){
            this.$axios.post('http://www.addres.com:9101/api/user/code/getCode').then(res => {
        this.imageMcode = res.data.data.mcode
          this.changeImage = "data:image/jpeg;base64," + res.data.data.base64;
          console.log(res)
        }).catch(err => {
          console.log(err)
          console.log("error");
        });
      },
    },
    mounted() {
      this.handleClickImge()  //加載刷新驗證碼
    }
  };
</script>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容