import { ResponseContentType, Http, Headers } from "@angular/http";
downloadDealOrder(url, token) {
const httpOptions = {
responseType: ResponseContentType.Blob,
headers: new Headers({
"Content-Type": "application/json",
Authorization: token //这里前端重写了Authorization,这样就不用在url后面拼token了
})
};
this.http
.get(url, httpOptions)
.switchMap(async res => {
const response: any = await this.uploadFile(res.json());
if (response && response.head.rep_code === "500") {
this.alertTS(response.head.rep_message);
return {
code: "500"
};
} else {
let _filename: string;
_filename = res.headers["_headers"]
.get("content-disposition")[0]
.split("=")[1];
if (_filename) {
if (_filename.includes(".zip")) {
_filename = decodeURI(_filename);
}
} else {
_filename = "成交单.pdf";
}
return {
filename: _filename,
data: res.blob()
};
}
})
.subscribe(
(res: any) => {
if (res.code !== "500") {
const url = window.URL.createObjectURL(res.data);
const a = document.createElement("a");
document.body.appendChild(a);
a.setAttribute("style", "display: none");
a.href = url;
a.download = res.filename;
a.click();
window.URL.revokeObjectURL(url);
a.remove();
}
},
error => {
console.error("download error:", JSON.stringify(error));
},
() => {
console.log("Completed file download.");
}
);
}
private uploadFile(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (evt: any) => {
try {
resolve(JSON.parse(evt.target.result));
} catch (e) {
resolve(undefined);
}
};
reader.readAsText(file);
});
}