二进制Blob大文件的下载解决方案

参考代码如下:

_downFile: function (opts) {
    // 添加遮罩
    _addShade()
    var xhr = new XMLHttpRequest()
    xhr.open(opts.method || 'POST', opts.url, true)
    xhr.responseType = 'blob'
    xhr.setRequestHeader('Content-Type', 'application/json')

    var formData = new FormData()
    for (var i in opts.data) {
      formData.append(i, opts.data[i])
    }
    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    xhr.onload = function () {
      // 请求完成
      if (this.status === 200) {
        var blob = this.response
        var a = document.createElement('a')
        var objectUrl = window.URL.createObjectURL(blob)
        a.download = opts.nofix ? opts.fileName : opts.fileName + (opts.postfix || '.xlsx')
        a.href = objectUrl
        $('body').append(a)
        a.click()
        window.URL.revokeObjectURL(objectUrl)
        $(a).remove()
        _removeShade()
      }
    }
    // 发送ajax请求
    xhr.send(JSON.stringify(opts.data))
  }

你可能感兴趣的:(二进制Blob大文件的下载解决方案)