/**
* @description: 下载文件
* @return {data}
*/
//url:下载地址,flieName:文件名,type:格式
function fileLinkToStreamDownload(url, fileName, type) {
//检验是不是地址HTTPS://....
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 {
//建立原生xhr调接口
let xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.setRequestHeader('Content-Type', `application/${type}`);
xhr.responseType = "blob";
xhr.onload = function () {
if (this.status == 200) {
//接受二进制文件流
console.log(this)
var blob = this.response;
const blobUrl = window.URL.createObjectURL(blob);
// 这里的文件名根据实际情况从响应头或者url里获取
const a = document.createElement('a');
a.href = blobUrl;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(blobUrl);
}
}
xhr.send();
}
}
/**
* @description:点击下载事件
* @return {*}
*/
function downloadLIst() {
//downloads为数组 里面存了要下载的pdf,这里做了循环就是多文件下载,不做吧for去掉就可以
for (let i = 0; i < downloads.length; i++) {
var url = downloads[i];
//name为文件的名字
var name = "flie"+new Date().getTime();
fileLinkToStreamDownload(url, name, 'pdf')
}
}