I am trying to submit my form with with form-data in angular 10. But when the request goes to interceptor , I have manually set the content-type to multipart/form-data. But now I'm getting
Error: Multipart: Boundary not found at new Multipart
Below is my code for interceptor.
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpResponse, HttpErrorResponse } from "@angular/common/http";
import { Injectable, Inject } from "@angular/core";
import { Observable, throwError } from "rxjs";
import { catchError, map, tap } from "rxjs/operators";
import { Router } from "@angular/router";
import { UserdataService } from "../astrologer/services/userdata/userdata.service";
import { ToastrService } from "ngx-toastr";
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private router: Router, private userDataService: UserdataService, private toast: ToastrService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token: string = this.userDataService.getToken();
let contentType = 'application/json';
if (request.body instanceof FormData) {
// we are sending a file here
contentType = 'multipart/form-data';
}
if (token) {
request = request.clone({ headers: request.headers.set('Authorization', this.userDataService.getToken()) });
// console.log(this.userDataService.getToken())
}
if (!request.headers.has('Content-Type')) {
request = request.clone({ headers: request.headers.set('Content-Type', contentType) });
}
request = request.clone({ headers: request.headers.set('Accept', 'application/json') });
return next.handle(request).pipe(
map((event: HttpEvent<any>) => {
// if (event instanceof HttpResponse) {
// console.log('event--->>>', event);
// }
return event;
}),
catchError((error: HttpErrorResponse) => {
if (error.status == 401) {
this.toast.error('Unauthorised Access', 'Error')
this.userDataService.removeData()
this.router.navigateByUrl('/login')
}
//console.log(error)
return throwError(error);
}));
}
}