Как перехватить запросы на загрузку при использовании ng6-file-man? - PullRequest
0 голосов
/ 27 ноября 2018

Я создаю функцию загрузки файлов для моего приложения на примере ng6-file-man-test , который использует модуль ng6-file-man для включения различных функций управления файлами / папками,В соответствии с требованиями моего приложения я также использую перехватчик для запросов на добавление к ним токена.Перехватчик работает нормально для большинства запросов, но не для запросов на загрузку и загрузку.

jwt.interceptor.ts

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpHandler, HttpRequest, HttpEvent, HttpResponse }
  from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {


    const duplicate = request.clone({ params: request.params.set('token', 'jwt-token') });

    return next.handle(duplicate);
  }
}

Я не сделал ни одногоизменения в AppComponent, который приведен в примере.

Ниже приведен файл app.module.ts с добавленным перехватчиком.

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';

import { AppComponent } from './app.component';
import { FileManagerModule } from 'ng6-file-man';
import { JwtInterceptor } from '../_helpers/jwt.interceptor';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    HttpClientModule,
    BrowserModule,
    FileManagerModule

  ],
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: JwtInterceptor,
      multi: true
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}

Компонент файлового менеджера выглядит следующим образом

    export class FileManagerComponent implements OnInit, AfterContentChecked {
  tree: TreeModel;
  appLanguage = 'it';

  constructor() {
    let currentUser = JSON.parse(localStorage.getItem('currentUser'));
    const treeConfig: ConfigInterface = {
      baseURL: 'https://backend.com/',
      api: {
        listFile: 'api/file/list',
        uploadFile: 'api/file/upload?token=' + currentUser.access_token,
        downloadFile: 'api/file/download',
        deleteFile: 'api/file/remove',
        createFolder: 'api/file/directory',
        renameFile: 'api/file/rename',
        searchFiles: 'api/file/search'
      },
      options: {
        allowFolderDownload: false,
        showFilesInsideTree: true
      }
    };

    this.tree = new TreeModel(treeConfig);
  }

  itemClicked(event: any) {
    console.log(event);
  }

  ngAfterContentChecked() {
    console.log('after');
  }

  ngOnInit() {
    console.log('before');

    let container = document.querySelector('.file-manager-left');

  }

}

Я хотел бы знать, есть ли возможный способ, которым я могу перехватить запросы upload и download, которые сделаны к бэкэнду модулем.

1 Ответ

0 голосов
/ 22 августа 2019

Это должно быть вызвано, потому что для всех запросов, которые вы перехватываете, вы ожидаете использования HttpService.

  • Uplodad использует библиотеку FineUploader, которая, кажется, не связана с HttpService
  • Загрузка осуществляется путем открытия нового окна со вставленными параметрами, содержащими только path.id

Мы будем рады, если вы предложите какое-либо решение по нашим проблемам GitHub

...