浏览器下载文件

先请求完成在下载

get_merged_illegal_event_exportExcel(params).then(res => {
	const blob = new Blob([res.data], {
		type: res.headers['content-type']
	})
	const downloadElement = document.createElement('a')
	const href = window.URL.createObjectURL(blob)
	downloadElement.style.display = 'none'
	downloadElement.href = href

	let filename = 'data.xlsx'
	const dispositions = res.headers['content-disposition'].split(';')
	for (let disposition in dispositions) {
		let dName = dispositions[disposition]
		if (dName.includes('filename')) {
			filename = dName.replace('filename=', '')
			filename = decodeURIComponent(filename)
    }
  }
	downloadElement.download = filename //下载后文件名
  document.body.appendChild(downloadElement)
  downloadElement.click() //点击下载
  document.body.removeChild(downloadElement) //下载完成移除元素
	window.URL.revokeObjectURL(href) //释放掉blob对象
})

绕过请求,让浏览器接收文件流,下载文件

需要后端配合

//buildUrl(query) {
	//由于绕过了请求,后端没有办法鉴权,需要把token当成参数传进去
	//let token = getToken()
	//获取baseUrl
  //let baseUrl = localStorage.getItem('Internet') || window.globalConfig.targetUrl
	//将baseUrl与参数、token拼接
	//url = `${baseUrl}/ris/merged_illegal_event/exportExcel?groupId=${query.groupId}&startTime=${query.startTime}&endTime=${query.endTime}&&isMisinformation=${query.isMisinformation}&token=${token}`
  //return url 
//},
buildUrl(query) {
  //由于绕过了请求,后端没有办法鉴权,需要把token当成参数传进去
  query.token = getToken()
  let baseUrl = localStorage.getItem('Internet') || window.globalConfig.targetUrl
  function toStringParam(object) {
    const params = []
    for (const key in object) {
      if (Object.hasOwnProperty.call(object, key)) {
        const value = object[key]
        if (typeof value !== 'undefined') {
          params.push(`${key}=${value}`)
        }
      }
    }
  return '?' + params.join('&')
  }
  return `${baseUrl}/ris/merged_illegal_event/exportExcel${toStringParam(query)}`
},

loadFile(data, filename = '导出表格.xlsx') {
	const downloadElement = document.createElement('a')
  const href = this.buildUrl(data)
  downloadElement.style.display = 'none'
  downloadElement.href = href
  downloadElement.download = filename //下载后文件名
  document.body.appendChild(downloadElement)
  downloadElement.click() //点击下载
  document.body.removeChild(downloadElement) //下载完成移除元素
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值