带Web API文件上传的Angular 8
我正在尝试使用Angular 8和asp.net web api core上载文件,但我无法在服务器上获取文件,因此出现此错误 无法创建Microsoft.AspNetCore.Http.ifformfile类型的实例。类型是接口或抽象类,无法实例化。路径“PatientiImage”,第1行,位置367 我的控制器方法是带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
[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 => {});
}