ajax下载文件

ajax的接收类型是“字符串”,而不是流类型,所以不能实现文件下载。那么一般实现文件下载都会用隐式表单请求、window.href.location、隐式iframe的src、进行文件下载。

如果一定要实现ajax异步下载文件的方式,可以通过原生的ajax进行下载,因为异步请求,导致后台

 response.setHeader("Content-Disposition","attachment;filename=healthReportAndItem.xlsx");不起作用

只能在原生ajax发送请求的时候定义好文件名和文件类型!

 

 

			$("#exportReportBtn").click(function(){
				 var startTime = $("#startTime").val();
				 var endTime = $("#endTime").val();
				 var xhr = new XMLHttpRequest();
                        //指定接收二进制流对象
                        xhr.responseType = 'blob';
				         xhr.open('post','/healthReport/exportHealthReport',true);
		                 //参数json串
				         xhr.setRequestHeader('Content-Type', 
                                             'application/json;charset=utf-8');
				         xhr.onload = function () {
				             if (this.status == 200) {
				                 var blob = this.response;
				                 var request = document.createElement('a');
				                 var url = window.URL.createObjectURL(blob);
				                 request.href = url;
				                 request.download = '监测报告.xlsx';
				                 request.click();
				             }
				         }
				        if (xhr.readyState == 1) {
			 				  $("#exportReportBtn").attr({disabled:"disabled"});
			 			}
				        //回调函数
		 		        xhr.onreadystatechange = function() {
		 			        if (xhr.readyState == 4 && xhr.status == 200) {
		 				        $("#exportReportBtn").removeAttr("disabled");
		 			        }
		 		         }
				 		 //发送请求
				         xhr.send(JSON.stringify({
				            "startTime" : startTime,
				            "endTime" : endTime
				         }));
			});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值