Невозможно установить Content-Type в элементе управления Angular FileUpload - PullRequest
0 голосов
/ 31 августа 2018

У меня в проекте Angular есть элемент управления PrimeNG FileUpload, и я вручную вызываю метод загрузки, как показано на PrimeNG вручную вызывает FileUpload . Однако, хотя я правильно заполнил параметр files данными файла, данные потеряли свое значение и возвращают значение null после передачи из service.ts в Controller (ASP.NET MVC). Я думаю, что проблема вызвана невозможностью установить Content-Type ни в одном из событий, как показано ниже:

onBeforeSendFile(event: any) {
    event.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    event.xhr.setRequestHeader("Content-Type", "multipart/form-data");
}

or

onBeforeUploadFile(event: any) {
    event.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    event.xhr.setRequestHeader("Content-Type", "multipart/form-data");
}

и т.д ...

Я сталкиваюсь с ошибкой "Не удается прочитать свойство 'setRequestHeader' с неопределенным значением" в строках setRequestHeader. Не могли бы вы сообщить мне, как я могу установить необходимые RequestHeaders и не потерять данные файла?

Обновление: Вот мой метод сообщения ниже:

 post(url: string, body: any, comp?: BaseComponent): Observable<any> {
    this.requestInterceptor(comp);
    return this.http.post<any>(url, { body: JSON.stringify(body) },
        {
            headers: new HttpHeaders({  // set the header values here
                'Content-Type': 'multipart/form-data',
                'X-Requested-With': 'XMLHttpRequest',
                'Test-Header': 'This is just a test header!'
            })
        }
    ).pipe(
        catchError((error, obs) => this.handleError(error, comp)),
        tap((res: Response) => {
            this.onSubscribeSuccess(res, comp);
        }, (error: any) => {
            this.onSubscribeError(error, comp);
        }),
        finalize(() => {
            this.onFinally(comp);
        }));
}

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете использовать HttpClient вместо:

this._HttpClient.post('url whatever', { 'body': 'here' }, {
    headers: new HttpHeaders({  // set the header values here
        'Content-Type': 'multipart/form-data'
    })
});
...