vue-qr生成二維碼並下載到本地【前端】


<div id="qrcode">
          <vue-qr ref="qr" :logoSrc="imageUrl" :text="qrText" :size="400"></vue-qr>
        </div>
        <div style="text-align:right;">
          <a-button type="primary" @click="saveCode(qrId)">保存到本地</a-button>
        </div>
data(){
    return(){
      imageUrl: require('@/assets/tianyuan.png'),
      qrText: '',
      qrId:'',
    }
}
//保存二維碼
    saveCode(data) {
      const fileName = data + 'png'
      let img = document.getElementById('qrcode').getElementsByTagName('img')[0].src

      let aLink = document.createElement('a')
      let blob = this.base64ToBlob(img)
      let evt = document.createEvent('HTMLEvents')
      evt.initEvent('click', true, true) // initEvent 不加后兩個參數在FF下會報錯  事件類型,是否冒泡,是否阻止瀏覽器的默認行為
      aLink.download = fileName
      aLink.href = URL.createObjectURL(blob)
      // aLink.dispatchEvent(evt);
      aLink.click()
    },
    //base64轉blob
    base64ToBlob(code) {
      let parts = code.split(';base64,')
      let contentType = parts[0].split(':')[1]
      let raw = window.atob(parts[1])
      let rawLength = raw.length
      let uInt8Array = new Uint8Array(rawLength)
      for (let i = 0; i < rawLength; ++i) {
        uInt8Array[i] = raw.charCodeAt(i)
      }
      return new Blob([uInt8Array], { type: contentType })
    },

 

 

 

https://my.oschina.net/songms/blog/5124625


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM