vue-cli脚手架使用vue-qriously插件生成二维码并上传至服务器

首先安装插件

npm install vue-qriously --save-dev

main.js引用插件

import VueQriously from 'vue-qriously'   //二维码生成插件
Vue.use(VueQriously)

xxx.vue文件中

<template>
  <div class="er_code" v-if="initQCodeShow">
         // initQCode: vue实例中定义的变量   
         // size:是这个Canvas的大小
          <qriously :value="initQCode" :size="100" class="er_code_box"/>
  </div>
  <div class="caozuo_div">
        <div class="er_sure_btn" @click="savecanvas">发布</div>
        <div class="er_quxiao_btn" @click="cancle">取消</div>
  </div>
</template>
<script>
export default {
  name:'erCode',
  data() {
    return {
      initQCode: "http://xxx",  //生成二维码的链接
    };
},
<script>

生成图片,并上传

methods:{ 
  savecanvas() {
      let canvas = document.querySelector(".er_code_box")
      let that = this;
      html2canvas(canvas, { scale: 2, logging: false, useCORS: true }).then(
        function(canvas) {
          let type = "png";
          let imgData = canvas.toDataURL(type);
          // 照片格式处理
          let _fixType = function(type) {
            type = type.toLowerCase().replace(/jpg/i, "jpeg");
            let r = type.match(/png|jpeg|bmp|gif/)[0];
            return "image/" + r;
          };
          imgData = imgData.replace(_fixType(type), "image/octet-stream");
          let filename = "UUSound" + "." + type;
          that.saveFile(imgData, filename);
        }
      );
   },

   dataURLtoFile(dataurl, filename) {
      var arr = dataurl.split(","),
        mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]),
        n = bstr.length,
        u8arr = new Uint8Array(n);
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      return new File([u8arr], filename, { type: mime });
   },
}

 saveFile(data, filename) {
      var toFile = this.dataURLtoFile(data, filename);
      console.log(toFile);
      var data = new FormData();
      data.append("img0", toFile);
      this.$axios.post("接口地址", data)
      .then(res=>{
       ...
      })
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值