Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Web API文件上传的Angular 8_Angular_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

带Web API文件上传的Angular 8

带Web API文件上传的Angular 8,angular,asp.net-core,asp.net-core-webapi,Angular,Asp.net Core,Asp.net Core Webapi,我正在尝试使用Angular 8和asp.net web api core上载文件,但我无法在服务器上获取文件,因此出现此错误 无法创建Microsoft.AspNetCore.Http.ifformfile类型的实例。类型是接口或抽象类,无法实例化。路径“PatientiImage”,第1行,位置367 我的控制器方法是 [HttpPost] [路线(“创建患者”)] [产品响应类型(StatusCodes.Status200OK,类型=类型(患者))] [产品响应类型(StatusCodes

我正在尝试使用Angular 8和asp.net web api core上载文件,但我无法在服务器上获取文件,因此出现此错误

无法创建Microsoft.AspNetCore.Http.ifformfile类型的实例。类型是接口或抽象类,无法实例化。路径“PatientiImage”,第1行,位置367

我的控制器方法是

[HttpPost]
[路线(“创建患者”)]
[产品响应类型(StatusCodes.Status200OK,类型=类型(患者))]
[产品响应类型(StatusCodes.Status400BadRequest)]
公共异步任务发布([FromBody]PatientViewModel模型)
{
(Patient,ServiceResponseMessage)newPatient=等待PatientServices.CreateNewPatient(模型);
if(newPatient.Item2.Status==ResponseStatus.Failed)
{
返回BadRequest(newPatient.Item2.Message);
}
返回Ok(newPatient.Item1);
}
我班的一部分是

公共类PatientViewModel{
public文件PatientImage{get;set};
公共字符串注释{get;set;}
}
我的Html文件是

请上传您的图片

{{file.name}-{{file.size}字节

我的角度2分量法是

onUpload(事件,类型){
如果(event.files.length==0){
此.toastr.error(“未选择任何文件”);
返回;
}
var fileToUpload=event.files[0];
让formData:formData=newformdata();
//input.append(“文件”,fileToUpload);
如果(类型==“patientImage”){
append('patientImage',fileToUpload,fileToUpload.name);
this.patientInfo.patientImage=formData.get('patientImage');
此.toastr.success(“上传成功”,“上传成功”);
}
else if(类型==“civilId”){
append('uploadCivilId',fileToUpload,fileToUpload.name);
this.patientInfo.civilIdPhotoCopy=formData.get('uploadCivilId');
此.toastr.success(“上传成功”,“上传成功”);
}
else if(类型==“passbortImage”){
formData.append('uploadPassportCopy',fileToUpload,fileToUpload.name);
this.patientInfo.passportcopy=formData.get('uploadPassportcopy');
此.toastr.success(“上传成功”,“上传成功”);
}
}

ASP.Net核心控制器代码:

[HttpPost("files", Name = "UploadFile")]
[Route("[action]/{FileName}")]
public async Task<IActionResult> UploadFile(string FileName, List<IFormFile> files)
{ 
try
{foreach (var formFile in files)
{
if (formFile.Length > 0)
{
using (var stream = new FileStream("PathToExportTo+FileName", FileMode.Create))
{
await formFile.CopyToAsync(stream);
}
}
}
return Ok();
}
catch (Exception ex)
{
//no actual error handling
return Ok();
}
服务代码:

  UploadFile(files: File[], FileName) {
    var formData = new FormData();
    Array.from(files).forEach(f => formData.append("files", f));
    this.http
      .post("PathToAPI" + FileName, formData)
      .subscribe(event => {});
  }
完全有可能有其他方法来实现这一点,但这是我目前正在使用的代码版本

upload(files: File[]) {
    this._sharedService.UploadFile(files, "FileName");
  UploadFile(files: File[], FileName) {
    var formData = new FormData();
    Array.from(files).forEach(f => formData.append("files", f));
    this.http
      .post("PathToAPI" + FileName, formData)
      .subscribe(event => {});
  }