当前位置: 首页 > Web前端 > JavaScript

Util:前端下载-导出文件

时间:2023-03-27 17:57:20 JavaScript

实际代码exportconstexportFile=(url,fileName)=>{functioncreateObjectURL(object){returnwindow.URL?window.URL.createObjectURL(object):window.webkitURL.createObjectURL(object)}letxhr=newXMLHttpRequest();让formData=newFormData();xhr.open('get',url);xhr.setRequestHeader('Auth-User-Token',getCookie('token'));xhr.responseType='blob';xhr.onload=function(e){if(this.status===200){letblob=this.response;让newFileName=`${fileName}`;如果(window.navigator.msSaveOrOpenBlob){navigator.msSaveBlob(blob,newFileName)}else{让a=document.createElement('a');让url=createObjectURL(blob);a.href=网址;a.download=newFileName;文档.body.append(a);a.点击();window.URL.revokeObjectURL(url);}}};xhr.send(formData)};请注意,必须设置xhr.responseType='blob'Ajax。axios也有相应的设置场景,后台以流的方式返回Excel文件。这种方法是适用的。此时HTTP响应头ResponseHeaders中的Content-Type:application/vnd.ms-excel;参考:ResponseHeadersHTTP/1.1200Vary:OriginVary:Access-Control-Request-MethodVary:Access-Control-Request-HeadersAccess-Control-Allow-Origin:*Access-Control-Expose-Headers:Content-DispositionContent-Disposition:attachment;filename=%E8%AE%A2%E5%8D%95%E5%85%A8%E8%BF%87%E7%A8%8B%E8%B7%9F%E8%B8%AA.xlsxX-内容类型-选项:nosniffX-XSS-保护:1;mode=blockCache-Control:no-cache,no-store,max-age=0,must-revalidatePragma:no-cacheExpires:0X-Frame-Options:SAMEORIGINContent-Type:application/vnd.ms-excel;charset=UTF-复制代码8Transfer-Encoding:chunkedDate:Thu,28Jul202207:44:59GMTKeep-Alive:timeout=60Connection:keep-alive参考处理ajax请求excel

猜你喜欢