//  下载办法 download.jsfunction download(data, strFileName, strMimeType) {  var self = window, // this script is only for browsers anyway...    u = 'application/octet-stream', // this default mime also triggers iframe downloads    m = strMimeType || u,    x = data,    D = document,    a = D.createElement('a'),    z = function(a) {      return String(a)    },    B = self.Blob || self.MozBlob || self.WebKitBlob || z,    BB = self.MSBlobBuilder || self.WebKitBlobBuilder || self.BlobBuilder,    fn = strFileName || 'download',    blob,    b,    ua,    fr  //if(typeof B.bind === 'function' ){ B=B.bind(self); }  if (String(this) === 'true') {    //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback    x = [ x, m ]    m = x[0]    x = x[1]  }  //go ahead and download dataURLs right away  if (String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)) {    return navigator.msSaveBlob // IE10 can't do a[download], only Blobs:      ? navigator.msSaveBlob(d2b(x), fn)      : saver(x) // everyone else can save dataURLs un-processed  } //end if dataURL passed?  try {    blob = x instanceof B ? x : new B([ x ], { type: m })  } catch (y) {    if (BB) {      b = new BB()      b.append([ x ])      blob = b.getBlob(m) // the blob    }  }  function d2b(u) {    var p = u.split(/[:;,]/),      t = p[1],      dec = p[2] == 'base64' ? atob : decodeURIComponent,      bin = dec(p.pop()),      mx = bin.length,      i = 0,      uia = new Uint8Array(mx)    for (i; i < mx; ++i) uia[i] = bin.charCodeAt(i)    return new B([ uia ], { type: t })  }  function saver(url, winMode) {    if ('download' in a) {      //html5 A[download]      a.href = url      a.setAttribute('download', fn)      a.innerHTML = 'downloading...'      D.body.appendChild(a)      setTimeout(function() {        a.click()        D.body.removeChild(a)        if (winMode === true) {          setTimeout(function() {            self.URL.revokeObjectURL(a.href)          }, 250)        }      }, 66)      return true    }    //do iframe dataURL download (old ch+FF):    var f = D.createElement('iframe')    D.body.appendChild(f)    if (!winMode) {      // force a mime that will download:      url = 'data:' + url.replace(/^data:([\w\/\-\+]+)/, u)    }    f.src = url    setTimeout(function() {      D.body.removeChild(f)    }, 333)  } //end saver  if (navigator.msSaveBlob) {    // IE10+ : (has Blob, but not a[download] or URL)    return navigator.msSaveBlob(blob, fn)  }  if (self.URL) {    // simple fast and modern way using Blob and URL:    saver(self.URL.createObjectURL(blob), true)  }  else {    // handle non-Blob()+non-URL browsers:    if (typeof blob === 'string' || blob.constructor === z) {      try {        return saver('data:' + m + ';base64,' + self.btoa(blob))      } catch (y) {        return saver('data:' + m + ',' + encodeURIComponent(blob))      }    }    // Blob but not URL:    fr = new FileReader()    fr.onload = function(e) {      saver(this.result)    }    fr.readAsDataURL(blob)  }  return true} /* end download() */export default download

utils引入

import download from './download'/*        * 应用download.js 强制浏览器下载图片、视频等文件        * @param {any} url url链接地址        * @param {any} strFileName 文件名        * @param {any} strMimeType 文件类型        * dzl        * 2020年5月8日         */export function downloadfile(url, strFileName, strMimeType) {  var xmlHttp = null  if (window.ActiveXObject) {    // IE6, IE5 浏览器执行代码    xmlHttp = new ActiveXObject('Microsoft.XMLHTTP')  }  else if (window.XMLHttpRequest) {    // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码    xmlHttp = new XMLHttpRequest()  }  //2.如果实例化胜利,就调用open()办法:  if (xmlHttp != null) {    xmlHttp.open('get', url, true)    xmlHttp.responseType = 'blob' //要害    xmlHttp.send()    xmlHttp.onreadystatechange = doResult //设置回调函数  }  function doResult() {    if (xmlHttp.readyState == 4) {      //4示意执行实现      if (xmlHttp.status == 200) {        //200示意执行胜利        download(xmlHttp.response, strFileName, strMimeType)      }    }  }}

//调用

 import {downloadfile} from './utils' downloadfile(url, name)//url 必传