5 changed files with 64 additions and 9 deletions
@ -1,6 +1,6 @@
|
||||
{ |
||||
"/api": { |
||||
"target": "http://39.106.78.171:8008", |
||||
"target": "http://192.168.1.250", |
||||
"secure": false, |
||||
"changeOrigin": true |
||||
} |
||||
|
@ -1,13 +1,71 @@
|
||||
import { Injectable } from '@angular/core'; |
||||
import { HttpClient } from '@angular/common/http'; |
||||
|
||||
@Injectable({ |
||||
providedIn: 'root' |
||||
}) |
||||
export class IsLoginService { |
||||
|
||||
constructor() { } |
||||
constructor(private http: HttpClient,) { } |
||||
|
||||
isLogin:boolean = false; //登录状态
|
||||
xxx:any |
||||
|
||||
|
||||
|
||||
//下载
|
||||
download (e) { |
||||
let file = e |
||||
let fileSize = file.fileLength //下载文件的总大小
|
||||
let shardSize = 10 * 1024 * 1024 //文件大小是否大于10MB
|
||||
|
||||
if (file && fileSize<=shardSize) { //<=10MB时直接下载
|
||||
this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{responseType: 'blob'},).subscribe(data=>{ |
||||
let url = window.URL.createObjectURL(new Blob([data])); //createObjectURL创建一个下载Blob的url地址
|
||||
let link = document.createElement("a"); |
||||
link.style.display = "none"; |
||||
link.href = url; |
||||
link.setAttribute("download", e.fileName); |
||||
document.body.appendChild(link); |
||||
link.click(); |
||||
}) |
||||
} else if (file && fileSize>shardSize) { //>10MB时分块下载
|
||||
this.blockingDownload(e) //分段下载
|
||||
} |
||||
|
||||
} |
||||
|
||||
//分段下载并合并
|
||||
async blockingDownload (e) { |
||||
let file = e |
||||
let fileSize = file.fileLength //下载文件的总大小
|
||||
let shardSize = 3 * 1024 * 1024 //3MB一个分片
|
||||
let allSlice = Math.ceil(fileSize / shardSize) //总文件/3MB===共分多少段
|
||||
let allFile:any = [] //所有的file分段
|
||||
|
||||
for (let i=0;i<allSlice;i++) { |
||||
let start = i * shardSize //每次下载文件开始位置
|
||||
let end = Math.min(fileSize, start + shardSize-1); //每次下载文件结束为止
|
||||
|
||||
let result = await new Promise ((result,reject)=>{ |
||||
this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{headers:{'range':`bytes= ${start}-${end}`},responseType:'blob'}).subscribe(data=>{ |
||||
result(data) })
|
||||
}) |
||||
allFile.push(result) |
||||
|
||||
if (allFile.length === allSlice) { //合并文件输出给浏览器
|
||||
let url = window.URL.createObjectURL(new Blob(allFile)); //createObjectURL创建一个下载Blob的url地址
|
||||
let link = document.createElement("a"); |
||||
link.style.display = "none"; |
||||
link.href = url; |
||||
link.setAttribute("download", e.fileName); |
||||
document.body.appendChild(link); |
||||
link.click(); |
||||
} |
||||
|
||||
} //for循环
|
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
|
Loading…
Reference in new issue