Asp.net web api Asp.net核心Webapi文件的Angular2为空
我正在使用angular2和asp.net核心webapi。使用以下代码发送文件信息。文件始终为空。我在post输入和api方法参数中使用了相同的名称,但仍然不走运。请帮帮我 FormDataAsp.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
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();
}
}