1

我想将 FormData 中的数据与同一对象中的文件一起发送。

我有一个对象

var dataForm : FormData = new FormData();
var objectToSend : any = {};
objectToSend.object1 = {
   Name:'Name',
   ID: 1
};
objectToSend.Arr = [1,2,3];

我发现了如何将文件放入 FromData

this.dataForm.append('file', <File>files[0], (<File>files[0]).name);

但是当以相同的方式将数据对象放入其中时,我像这样放置文件...

var stringfiedObejct = JSON.stringify(objectToSend);
this.dataForm.append('data', new Blob([stringfiedObejct], { type: 'application/json' }));

和电话一样

this.Http.post(`apiPath`, this.dataForm, { reportProgress: true, observe: 'events' })
      .subscribe(event => {
        

      });

它生成错误415 Unsupported Media尽管 api 方法具有相同的对象定义

public class DataObject
{
     public int ID {get;set;}
     public string Name {get;set;}
}

public class RequestParams
{
     public List<int> Arr {get;set;}
     public DataObject object1 {get;set;}
}

api是...

[HttpPost("uploadFile"), DisableRequestSizeLimit]
public IActionResult Upload(RequestParams param)
        {
            var file = Request.Form.Files[0];
            return Ok();
        }

虽然文件是在 api 中收到的,但是一旦我把对象放在 FormData 中,它就会产生那个错误

4

1 回答 1

-1

如果你想在 formdata 中传递对象,你可以这样

演示模型:

public class DemoModel
{
   public IList<IFormFile> Images{ get; set; }

   public DataObject object1 {get;set;}
}

将对象传递给 FormData:

var pdata = new FormData();
            pdata.append('object1.Name', 'Name');
            pdata.append('object1.ID', 1);
            
于 2020-07-21T08:36:30.703 回答