将文件和字符串数据都附加到Angular 9中的FormData对象

我正在从Angular应用程序将FormData对象发送到ASP .Net Core中的控制器。在此FormData对象中,我想附加一个已上传到客户端的文件和一个项目ID。

uploadLink(files, projectId) {
  if (files.length === 0) {
    return;
  }
  const fileToUpload = files[0] as File;
  const formData = new FormData();
  formData.append('file', fileToUpload, fileToUpload.name);
  formData.append('projectId', projectId);
  return formData;
  }
}

数据发送到控制器后,我只能看到上传文件中的数据。项目ID根本没有传递到控制器。

    // POST: FileExport/SetReconciliationCSV
    [HttpPost("reconciliation")]
    public async Task<IActionResult> SetReconciliation(IFormFile file)
    {
        fileName = file.FileName;

        var records = new List<ReconciliationExportCsv>();

我正在使用IFormFile接收数据服务器端。我已经检查了客户端是否将正确的项目ID传递给要附加到FormData对象的'uploadLink'方法。为什么未将projectId传递给我的控制器?

评论
  • podio
    podio 回复

    解决了:

    如上所述,控制器仅从FormData对象中请求文件。我可以通过添加参数'[FromForm] string projectId'来检索projectId 到我的.net核心中的控制器。

        // POST: FileExport/SetReconciliationCSV
        [HttpPost("reconciliation")]
        public async Task<IActionResult> SetReconciliation(IFormFile file, [FromForm]string projectId)
        {
            fileName = file.FileName;
            string id = projectId;
            var records = new List<ReconciliationExportCsv>();