|
|
|
@ -10,15 +10,19 @@ export class IsLoginService {
|
|
|
|
|
|
|
|
|
|
isLogin:boolean = false; //登录状态
|
|
|
|
|
|
|
|
|
|
isDownloading:boolean = false; //下载状态
|
|
|
|
|
downloadProgress:number = 0;//下载进度
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//下载
|
|
|
|
|
download (e) { |
|
|
|
|
this.isDownloading = true //开启下载进度条
|
|
|
|
|
let file = e |
|
|
|
|
let fileSize = file.fileLength //下载文件的总大小
|
|
|
|
|
let shardSize = 10 * 1024 * 1024 //文件大小是否大于10MB
|
|
|
|
|
|
|
|
|
|
if (file && fileSize<=shardSize) { //<=10MB时直接下载
|
|
|
|
|
this.downloadProgress = 70 |
|
|
|
|
this.http.get(`/api/Objects/drives/${file.objectName}`,{responseType: 'blob'},).subscribe(data=>{ |
|
|
|
|
let url = window.URL.createObjectURL(new Blob([data])); //createObjectURL创建一个下载Blob的url地址
|
|
|
|
|
let link = document.createElement("a"); |
|
|
|
@ -27,6 +31,8 @@ export class IsLoginService {
|
|
|
|
|
link.setAttribute("download", e.fileName); |
|
|
|
|
document.body.appendChild(link); |
|
|
|
|
link.click(); |
|
|
|
|
this.isDownloading = false //关闭下载进度条
|
|
|
|
|
this.downloadProgress = 0 //初始化进度条
|
|
|
|
|
}) |
|
|
|
|
} else if (file && fileSize>shardSize) { //>10MB时分块下载
|
|
|
|
|
this.blockingDownload(e) //分段下载
|
|
|
|
@ -51,6 +57,7 @@ export class IsLoginService {
|
|
|
|
|
result(data) })
|
|
|
|
|
}) |
|
|
|
|
allFile.push(result) |
|
|
|
|
this.downloadProgress = Number((i/allSlice).toFixed(2))*100 |
|
|
|
|
|
|
|
|
|
if (allFile.length === allSlice) { //合并文件输出给浏览器
|
|
|
|
|
let url = window.URL.createObjectURL(new Blob(allFile)); //createObjectURL创建一个下载Blob的url地址
|
|
|
|
@ -60,6 +67,8 @@ export class IsLoginService {
|
|
|
|
|
link.setAttribute("download", e.fileName); |
|
|
|
|
document.body.appendChild(link); |
|
|
|
|
link.click(); |
|
|
|
|
this.isDownloading = false //关闭下载进度条
|
|
|
|
|
this.downloadProgress = 0 //初始化进度条
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} //for循环
|
|
|
|
|