From 7de4c937e02226348b219fffd342ffcfe89e17b1 Mon Sep 17 00:00:00 2001 From: cpf <1105965053@qq.com> Date: Tue, 9 Jun 2020 14:24:25 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=AE=8C=E5=96=84]=E7=BD=91=E7=9B=98=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- proxy.config.json | 2 +- src/app/http-interceptors/base-interceptor.ts | 5 +- src/app/is-login.service.ts | 62 ++++++++++++++++++- src/app/navigation/navigation.component.ts | 2 +- 5 files changed, 64 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 958a054..931fb06 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "scripts": { "ng": "ng", - "start": "ng serve --proxy-config proxy.config.json --open --port 4200 ", + "start": "ng serve --proxy-config proxy.config.json --open --port 4100 ", "build": "ng build", "test": "ng test", "lint": "ng lint", diff --git a/proxy.config.json b/proxy.config.json index 0b360df..e8a339a 100644 --- a/proxy.config.json +++ b/proxy.config.json @@ -1,6 +1,6 @@ { "/api": { - "target": "http://39.106.78.171:8008", + "target": "http://192.168.1.250", "secure": false, "changeOrigin": true } diff --git a/src/app/http-interceptors/base-interceptor.ts b/src/app/http-interceptors/base-interceptor.ts index 38a7e07..3facba7 100644 --- a/src/app/http-interceptors/base-interceptor.ts +++ b/src/app/http-interceptors/base-interceptor.ts @@ -44,10 +44,7 @@ export class BaseInterceptor implements HttpInterceptor { private handleError(error: HttpErrorResponse) { // 用户认证失败返回登录页 if (error.status === 401||error.status === 614) { - this.token.delete() - sessionStorage.clear() - window.localStorage.clear() - this.router.navigate(['/login']) + const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 diff --git a/src/app/is-login.service.ts b/src/app/is-login.service.ts index 69ea49a..0f900e1 100644 --- a/src/app/is-login.service.ts +++ b/src/app/is-login.service.ts @@ -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{ + 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循环 + + } + + } diff --git a/src/app/navigation/navigation.component.ts b/src/app/navigation/navigation.component.ts index f4e90b8..54875c8 100644 --- a/src/app/navigation/navigation.component.ts +++ b/src/app/navigation/navigation.component.ts @@ -48,7 +48,7 @@ export class NavigationComponent implements OnInit { ); } xxx(e){ - this.sss.xxx = e + } }