版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_19650093/article/details/90644986
downloadFile(){ var xhr = new XMLHttpRequest(); // xhr.open('GET', url, true); // 使用GET方式比较简单,参数直接附在URL上 xhr.open('post', url, true); //POST的格式相对比较灵活,参数可以有比较多的形式,例如JSON,表单FORM等 xhr.responseType = "blob"; // 返回类型blob xhr.setRequestHeader("Content-Type","application/json");//提交的数据为json格式 // 定义请求完成的处理函数 xhr.onload = function () { // 请求完成 if (this.status === 200) { // 返回200 var blob = this.response; var reader = new FileReader(); reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情href reader.onload = function (e) { // 转换完成,创建一个a标签用于下载 var a = document.createElement('a'); a.download = 'data.csv'; a.href = e.target.result; $("body").append(a); // 修复firefox中无法触发click a.click(); $(a).remove(); } } }; // 发送ajax请求,案例中我们使用POST的请求格式,参数类型为JSON var param = {}; param.filename = "test"; xhr.send(param); }
上面模拟了一个post的请求,类似于ajax中的,区别在于ajax对于文件流的接收没有一个很方便的的方式(反正我找了很久没有找到)
$.ajax({ url: url, type: 'post', dataType: 'json', data: JSON.stringify(param), success: function(){ }, error: function(){ } })
文章参考了以下文章内容:
https://blog.csdn.net/harryhare/article/details/80778066
https://blog.csdn.net/swl979623074/article/details/77855629/
文章来源: https://blog.csdn.net/sinat_19650093/article/details/90644986