我正在尝试将一个csv文件从Angular上传到Asp.NET Core webapi。 但是,尽管Fiddler在网络上显示出一些东西,但是在网络上获取空对象。 我正在使用Kendo UI上传文件。
你能告诉我如何解决这个问题吗?我试过[FromBody]和[FromForm],但没有区别。
[HttpPost]
[Route(ApiRoutes.EodVariationMargin)]
public async Task<IActionResult> UploadPlugAsync(object plugs)
{
var content = JsonConvert.SerializeObject(plugs);
_logger.LogInformation(content);
return Ok();
}
Request Count: 1
Bytes Sent: 1,470 (headers:539; body:931)
Bytes Received: 198 (headers:198; body:0)
ACTUAL PERFORMANCE
--------------
ClientConnected: 11:34:36.511
ClientBeginRequest: 11:34:44.561
GotRequestHeaders: 11:34:44.561
ClientDoneRequest: 11:34:44.566
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 11:34:36.512
FiddlerBeginRequest: 11:34:44.566
ServerGotRequest: 11:34:44.566
ServerBeginResponse: 11:35:15.629
GotResponseHeaders: 11:35:15.629
ServerDoneResponse: 11:35:15.629
ClientBeginResponse: 11:35:15.629
ClientDoneResponse: 11:35:15.630
Overall Elapsed: 0:00:31.069
RESPONSE BYTES (by Content-Type)
--------------
~headers~: 198
答案 0 :(得分:1)
我正在使用它并且它有效:
SubDagOperator
和Angular html:
SubDagOperator(
subdag=subdag,
task_id="...",
on_retry_callback=lambda context: subdag.clear(
start_date=context['execution_date'],
end_date=context['execution_date']),
dag=dag
)
答案 1 :(得分:1)
您无法绑定到object
类型的操作参数。相反,我认为你可以但它不会为你做任何事情,因为object
没有属性。因此,模型绑定器将简单地丢弃所发布的所有内容。
如果您尝试接受该参数中的上传,则它应为IFormFile
类型。如果您尝试接受JSON有效负载,那么它应该是您创建的实际类来表示该有效负载。例如,如果您发送的JSON如下:
{
"foo": "bar"
}
然后,你需要一个类:
public class MyDTO
{
public string Foo { get; set; }
}
如果您尝试将上传作为JSON有效内容的一部分发送,那么您的DTO类应该具有以文件上传密钥命名的byte[]
属性,并且您的上传数据应作为Base发送64.例如:
{
// other stuff
"file": "{base64 encoded byte array}"
}
使用DTO:
public class MyDTO
{
// other properties
public byte[] File { get; set; }
}