Ich benutze angular2 mit asp.net Core Webapi. Verwenden Sie den folgenden Code zum Senden von Dateiinformationen. IFormFile ist immer Null. Ich habe den gleichen Namen in Post-Eingabe und in API-Parameter verwendet, immer noch kein Glück. Bitte hilf mir.Angular2 zu Asp.net Core Webapi IFormFile ist null
Formdata
this.formData.append("file", f,f.name);
Komponentenmethode
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);
})
}
Service-Methode
UploadFiles(data: FormData): Observable<boolean> {
return this.ExecuteFilePost("Upload/Upload", data);
}
Base Service Methode:
public ExecuteFilePost(action: string, data: FormData) {
let _body = data;
let headers = new Headers({ 'Content-Type': undefined});
let url = this._baseUrl + action;
let requestoptions: RequestOptions = new RequestOptions({
headers: headers,
});
console.log('req url:' + url);
return this.http.post(url,_body,requestoptions)
.share()
.map((res: Response) => {
if (res.status < 200 || res.status >= 300) {
throw new Error('This request has failed ' + res.status);
}
else {
return res.json();
}
});
}
WebAPI Methode
[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 Anfrage Bildschirme enter image description here
Ich konnte das Problem beheben. Ich habe folgende Dinge getan. entfernt { 'Content-Type': undefined} Added 'Annehmen', 'application/json' Und ConfigureServices-> services.AddCors (Optionen => { options.AddPolicy ("CorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); }); Konfigurieren-> app.UseCors ("CorsPolicy"); –