【问题标题】:Upload file with parameters Angular 10 to .Net Core Web API using FormData使用 FormData 将带有参数 Angular 10 的文件上传到 .Net Core Web API
【发布时间】:2021-07-26 12:53:39
【问题描述】:

我正在寻找一种使用 FormData 将参数表单与文件一起附加的方法。

所以我有一个文件输入和一个带有许多参数的表单。

这是我发送文件的方式:

 let formData=new FormData();
 formData.append("file",<File>this.file);

这是我的表格:

 this.fileForm = this.fb.group({
  headline: [],
  fileType: [],
  fileCategory: [],
  fileEssence: []
});

我尝试像这样添加表单值:

 formData.append("params",this.fileForm.value);

但我在 c# 代码中找不到它:

var form= Request.Form;

只带文件对象。

还有其他方法吗?

更新:

这是我的 Angular 上传功能:

  save(){
   let formData=new FormData();
   formData.append("file",<File>this.file);
   formData.append("parameters",this.fileForm.value);
   this.fileService.uploadFile(formData).subscribe((res)=>{
  console.log(res);
})

}

文件服务:

 uploadFile(fileUpload: any): Observable<any> {
    return this.http.post(ApiConsts.uploadFile, fileUpload).pipe(
        map((res: any) => res))
}

C#函数:

   public IActionResult UploadFile([FromForm] FileUploadDTO parameters, [FromForm] IFormFile file)
    {
    }

FileUploadDTO 类:

public class FileUploadDTO
{
 
    public FileCategory fileCategory { get; set; }
    public FileEssence fileEssence { get; set; }
    public FileType fileType { get; set; }
    public string  headline { get; set; }

}

参数 var 为空,不为空但所有值均为空。

【问题讨论】:

  • 文件有哪些参数?
  • @tmsbrndz - 这是一个充满参数、整数和字符串的表单,由用户填写。
  • Angular 10 到 .Net Core Web API

标签: c# angular form-data


【解决方案1】:

formData 你可以附加 blob 或字符串。 因此,您可以将值附加到 formData 并将其发送到后端。后台可以通过FromForm属性获取post参数。

这是我的例子:

const formData = new FormData(); 
formData.append('file', this.file);
formData.append('fileType', this.fileForm.get('fileType').value);
formData.append('fileCategory', this.fileForm.get('fileCategory').value);

在后端获取formData

public void FormHandler([FromForm] string fileType, [FromForm] string fileCategory, [FromForm] IFormFile file){
// do the stuff
}

【讨论】:

  • @tmsbrndz- 我试过 public void FormHandler([FromForm] FileUploadDTO parameters, [FromForm] IFormFile file){ // 做的东西 },参数返回空
  • @tmsbrndz- 我更新了我的问题,请查看,谢谢
  • file 来自哪里?
  • 问题不在于带参数的文件bu。
  • uploadFile(event) { this.file = event[0]; }
猜你喜欢
  • 2020-05-27
  • 2020-08-15
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2017-11-01
  • 2020-04-08
  • 1970-01-01
相关资源
最近更新 更多