浏览器弹窗式下载excel

////前端JS////
downloadFile(response, fileName, contentType){
	const blob = new Blob([response.body],{type:contentType});
	const url = window.URL.createObjectURL(blob);
	// 以打开新窗口方式进行下载
	window.open(url);    // 每次创建的文件的文件名都是随机的字符串
	// 以动态创建a标签方式进行下载
	const a = document.createElement('a');
	a.href = url;
	a.download = fileName;
	a.click();
	window.URL.revokeObjectURL(url);
}

customDownload(){
	// 业务逻辑的处理
	…………………………
	this.loadingService.show();   
	
	const uri = new Uri(this.uriService.extendUri('api路径'),{});
	const url = uri.toString();
	const headers = new HttpHeaders({'Content-Type': 'application/json'});
	const option = {
		responseType: 'blob' as any,
		headers:headers,
		observe: 'response' as any,
	}
	const body = {
		filters: filters    // 筛选框的参数
	}
	this.httpClient.put(url, body, option).subscribe(response: any) => {
		this.loadingService.hide();
		const contentType = "application/vnd.ms-excel;charset=utf-8";
		let fileName = response.headers.get("Content-Disposition").split(";")[1].split("filename=")[1];
		fileName = decodeURI(fileName);
		if('msSaveOrOpenBlob' in navigator){
			const blob = new Blob([response.body],{type: contentType});
			window.navigator.msSaveBlob(blob,fileName);
		} else {
			this.downloadFile(response, fileName, contentType);
		}
	},
		error => {
			this
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值