const fileLinkToStreamDownload = (url) => {
let fileName = getDay();
let reg =
/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if (!reg.test(url)) {
throw new Error("传入参数不合法,不是标准的文件链接");
} else {
let xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.setRequestHeader("Content-Type", `application/pdf`);
xhr.responseType = "blob";
xhr.onload = function () {
if (this.status == 200) {
//接受二进制文件流
var blob = this.response;
downloadExportFile(blob, fileName);
}
};
xhr.send();
}
};
const downloadExportFile = (blob, tagFileName) => {
let downloadElement = document.createElement("a");
let href = blob;
if (typeof blob == "string") {
downloadElement.target = "_blank";
} else {
href = window.URL.createObjectURL(blob); //创建下载的链接
}
downloadElement.href = href;
downloadElement.download = tagFileName;
console.log(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
if (typeof blob != "string") {
window.URL.revokeObjectURL(href); //释放掉blob对象
}
};
const getDay = () => {
let time = new Date(),
year = time.getFullYear(),
month = time.getMonth() + 1,
day = time.getDate(),
timeStem = time.getTime();
return `${year}/${month}/${day}/${timeStem}.pdf`;
};
// 调用
fileLinkToStreamDownload(url); //直接传入要下载的pdf文件的线上地址(用其他服务器的可能会跨域,自己公司后端返回的一般不会,建议让后端在云端给个pdf地址做测试)
pdf下载
最新推荐文章于 2022-11-23 11:14:04 发布