API получает 0 httpRequest Количество файлов при передаче данных из Angular 7 - PullRequest
0 голосов
/ 24 сентября 2019

Я загружаю файл excel из angular 7 в веб-API, используя следующий код:

 <input type="file" (change)="fileEvent($event);">

 public fileEvent($event) {
    const fileSelected: File = $event.target.files[0];

    this.masterService.UploadExcel(fileSelected)
        .subscribe((response) => {
            console.log('set any success actions...');
            return response;
        },
        (error) => {
            console.log('set any error actions...');
        });
}
fileToUpload: File = null;
handleFileInput(files: FileList) {
    this.fileToUpload = files.item(0);
}

Сервисный код:

 UploadExcel(url: string, data: any): Observable<any> {
    this.spinner.show();

    //  headers.append('Content-Type', 'multipart/form-data');  

    let headers = new HttpHeaders({
        'Content-Type': 'multipart/form-data',
        'Authorization': 'Bearer ' + sessionStorage.getItem('auth_token'),
        'CompanyId': sessionStorage.getItem('companyId')
    });
    debugger;
    return this.http.post<any>(AppSettings.apiEndPoint + 'ExcelExample/UploadExcel', data, { headers: headers }).pipe(
        map((res: any) => {
            this.spinner.hide();
            return res
        }),
        catchError((errorRespnse: any) => {
            this.spinner.hide();
            var tempMessage = undefined;
            tempMessage = errorRespnse.error.ModelState.error[0];
            if (tempMessage != undefined) {
                this.notificationService.smallBox('error', tempMessage);
            }
            else {
                this.notificationService.smallBox('error', 'Something went wrong, please contact your administrator.');
            }
            return Observable.throw(errorRespnse);
        }));
}

, а также пробую с приведенным ниже сервисным кодом:

 postFile(fileToUpload: File): Observable<boolean> {
    const endpoint = AppSettings.apiEndPoint + 'ExcelExample/UploadExcel';
    const formData: FormData = new FormData();
    formData.append('fileKey', fileToUpload, fileToUpload.name);
    let headers = new HttpHeaders({
        'Content-Type': 'multipart/form-data',
        'Authorization': 'Bearer ' + sessionStorage.getItem('auth_token'),
        'CompanyId': sessionStorage.getItem('companyId')
    });

    return this.http
        .post(endpoint, formData, { headers: headers })
        .map(() => { return true; })
        .catch((e) => this.handleError(e));
}

Код контроллера API:

    [Route("UploadExcel")]
    [HttpPost]
    public string ExcelUpload()
    {
       string message = "";
        HttpResponseMessage result = null;
        var httpRequest = HttpContext.Current.Request;


        // getting 0 count
        if (httpRequest.Files.Count > 0)
        {
        }
  }

Со стороны API я получаю 0 файлов.

Я также пытаюсь использовать следующие URL:

угловая загрузка файлов

загрузка и загрузка файлов в угловых 4 машинописных текстах

1 Ответ

1 голос
/ 25 сентября 2019

Сначала попробуйте добавить эту строку в файл App_Start / WebApiConfig.cs

   config.Formatters.XmlFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data"));

. Использовать данные формы для публикации файла

postFile(fileToUpload: File): Observable<boolean> {
    const endpoint = AppSettings.apiEndPoint + 'ExcelExample/UploadExcel';
    const formData: FormData = new FormData();
    formData.append('fileKey', fileToUpload, fileToUpload.name);
    let headers = new HttpHeaders({
        'Content-Type': 'multipart/form-data',
        'Authorization': 'Bearer ' + sessionStorage.getItem('auth_token'),
        'CompanyId': sessionStorage.getItem('companyId')
    });

    return this.http
        .post(endpoint, formData, { headers: headers })
        .map(() => { return true; })
        .catch((e) => this.handleError(e));
}

.здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...