参考代码如下:
_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))
}