1. POST方式进行文件导出;
- // url 下载URL
- fileName 下载文件名称
- function exportFile(url,fileName) {
- let xhr = new XMLHttpRequest();
- xhr.open("POST",url);
- xhr.responseType = "blob";
- xhr.onload = () => {
- let ctx = xhr.response;
- let blob = Blob([ctx]);
- if ("msSaveOrOpenBlob" in navigator) {兼容IE
- window.navigator.msSaveOrOpenBlob(blob,fileName);
- } else {
- let aLink = document.createElement("a");
- aLink.download = fileName;
- aLink.style.display = "none";
- aLink.href = URL.createObjectURL(blob);
- document.body.appendChild(aLink);
- aLink.click();
- document.body.removeChild(aLink);
- }
- };
- xhr.send();
- }
使用方法:exportFile(url,fileName);
使用Angular方式进行导出:
- class ExportEvent {
- constructor( private http:HttpClient ){}
- url 下载URL
- fileName 下载文件名称
- exportFile(url,fileName){
- this.http.request("POST",url,{},{responseType:"blob"}).pipe()
.subscribe(- (res)=>{
- let blob = Blob([res]);
- window.navigator.msSaveOrOpenBlob(blob,fileName);
- } {
- let aLink = document.createElement("a");
- aLink.download = fileName;
- aLink.style.display = "none";
- aLink.href = URL.createObjectURL(blob);
- document.body.appendChild(aLink);
- aLink.click();
- document.body.removeChild(aLink);
- }
- },(error)=>{
- let reader = FileReader();
- reader.onload = (e)=>{
- if(e && e["target"]){
- let errorMsg = JSON.parse(e["target"]["result"]);
- if(errorMsg && errorMsg["code"]){
- console.log("有报错,出错了。。。。。");
- }
- }
- }
- error.error的值是一个Blob对象
- reader.readAsText(error.error);
- }
);- }
- }
2. GET方式进行文件导出;
- url 下载路径
- window.location = url;