下载模板(vue、react)

一、ajax原生 (vue)

var xhr = new XMLHttpRequest()
xhr.open('get', '可以直接下载文档的完整路径链接')
xhr.responseType = 'blob'
xhr.send()
xhr.onload = function () {
	if (this.status === 200 || this.status === 304) {
		const fileReader = new FileReader()
		fileReader.readAsDataURL(this.response)
		fileReader.onload = function () {
			const a = document.createElement('a')
			a.style.display = 'none'
			a.href = this.result
			a.download = '模板'
			document.body.appendChild(a)
			a.click()
			document.body.removeChild(a)
		}
	}
}

二、axios请求(vue)


	url: '接口地址',
	method: 'get',
	responseType: 'arraybuffer', // 原生用blob,axios请求用arraybuffer
	callBack: res =>{
		var blob = new Blob([res], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}) 
		const fileName = '模板' // excel表格名字
		const elink = document.createElement('a')
		if ('download' in elink) { // 非IE下载
			elink.download = fileName
			elink.style.display = 'none'
			elink.href = URL.createObjectURL(blob)
			document.body.appendChild(elink)
			elink.click()
			URL.revokeObjectURL(elink.href) // 释放URL 对象
			document.body.removeChild(elink)
		} else { // IE10+下载
			navigator.msSaveBlob(blob, fileName)
		}
	}

三、a标签(vue、react)

<a download href={`xlsx文件完整路径(.xlsx)`}>下载模板</a>

四、react

function downloadFile(data, fileName, fileType) {
  // 创建一个Blob对象,表示二进制数据
  const blob = new Blob([data], { type: fileType });

  // 创建一个虚拟链接
  const a = document.createElement('a');
  a.href = URL.createObjectURL(blob);

  // 设置下载文件的名称
  a.download = fileName;

  // 将虚拟链接添加到文档中
  document.body.appendChild(a);

  // 模拟点击链接以触发下载
  a.click();

  // 移除虚拟链接
  document.body.removeChild(a);
}
downloadFile(data, 文件名称, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值