Asp.net web api Asp.net核心Webapi文件的Angular2为空

Asp.net web api Asp.net核心Webapi文件的Angular2为空,asp.net-web-api,Asp.net Web Api,我正在使用angular2和asp.net核心webapi。使用以下代码发送文件信息。文件始终为空。我在post输入和api方法参数中使用了相同的名称,但仍然不走运。请帮帮我 FormData this.formData.append("file", f,f.name); 组件方法 public UploadFiles() { console.log("Form Data:" + this.formData); let saved: boolean = fa

我正在使用angular2和asp.net核心webapi。使用以下代码发送文件信息。文件始终为空。我在post输入和api方法参数中使用了相同的名称,但仍然不走运。请帮帮我

FormData

 this.formData.append("file", f,f.name);
组件方法

public UploadFiles() {
        console.log("Form Data:" + this.formData);

        let saved: boolean = false;
        this.claimsService
            .UploadFiles(this.formData)
            .subscribe(data => {
                saved = data;
            }, error => {
                console.log(error)
                swal(error);

            })
    }
服务方法

UploadFiles(data: FormData): Observable<boolean> {
        return this.ExecuteFilePost("Upload/Upload", data);
    }
[HttpPost]
        [ActionName("Upload")]
        public async Task Upload(IFormFile file)
        {

            var uploads = Path.Combine(_environment.WebRootPath, "uploads");
           // foreach (var file in files)
           // {
                if (file.Length > 0)
                {
                    using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create))
                    {
                        await file.CopyToAsync(fileStream);
                    }
                }
           // }
        }
Chrome请求屏幕

我知道这篇文章很老了,但可能对其他人来说。您可以这样做:

HTML:

服务:

upload(files: any) {
        let formData = new FormData();
        for (let i = 0; i < files.length; i++) {
            formData.append("files", files[i]);
        }

        return this.http
            .post(fileUploadApi, formData)
            .map(response => this.extractData(response as Response))
            .catch(error => this.httpErrorHandlerService.responseError(error));
    }

我能够解决这个问题。我做了以下几件事。删除{“内容类型”:未定义}添加了“接受”、“应用程序/json”和ConfigureServices->services.AddCors(选项=>{options.AddPolicy(“CorsPolicy”,builder=>builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()).AllowCredentials();});配置->app.UseCors(“CorsPolicy”);
<input #fileInput type="file" multiple />
<button (click)="addFile()">Add</button>
@ViewChild("fileInput") fileInput;

    addFile(): void {
        let fi = this.fileInput.nativeElement;
        if (fi.files) {
            let fileToUpload = fi.files; 
            this.settingsService
                .upload(fileToUpload)
                .subscribe(res => {
                    console.log(res);
                });
        }
    }
upload(files: any) {
        let formData = new FormData();
        for (let i = 0; i < files.length; i++) {
            formData.append("files", files[i]);
        }

        return this.http
            .post(fileUploadApi, formData)
            .map(response => this.extractData(response as Response))
            .catch(error => this.httpErrorHandlerService.responseError(error));
    }
[HttpPost]
        [Route("Upload")]
        public IActionResult UploadFiless([FromForm] IFormFileCollection files)
        {
            try
            {
                return this.Ok();
            }
            catch (Exception)
            {
                return this.BadRequest();
            }
        }