在控制器中结合Json和文件上传

15 浏览
0 Comments

在控制器中结合Json和文件上传

我正在尝试使用Angular将包含json和文件的表单发送到一个控制器。\n

[HttpPost("Save", Name = "SaveReportRequest")]
public ActionResult Save([Bind("deviceType,buildType,version,qGateDate,notes")]
            ReportRequestModel reportRequest, IFormFile file)
{
    // 验证reportRequest
    if (ModelState.IsValid == false)
    {
        return BadRequest("无效的ModelState");
    }
    if (ValidateQGateDate(reportRequest.QGateDate) == false)
    {
        return BadRequest("QGateDate超出最小或最大范围。");
    }
}

\n但是,我得到的结果是\n[07:22:31 INF] Request finished HTTP/2 POST https://localhost:5001/api/ReportRequest/Save application/json 130 - 415 175 application/problem+json;+charset=utf-8 20.0784ms\n我应该如何设置正确的Content-Type,或者如何构建它才能使其工作?

0
0 Comments

问题的原因是在控制器中要同时处理Json数据和文件上传,但是当前的实现方式无法满足这个需求。解决方法是创建一个新的模型类,将Json数据和文件上传的内容放在一起。

首先,我们可以创建一个名为RequestModel的类,并在其中定义一个名为file的属性,类型为IFormFile。这样,我们就可以将文件上传的内容放在这个属性中。

代码如下:

public class RequestModel
{
    // 其他属性...
    public IFormFile file { get; set; }
}

然后,我们可以将Json数据和文件上传的内容一起发送给控制器。

图片示例:

![enter image description here](https://i.stack.imgur.com/E9RWe.png)

这样,控制器就可以同时处理Json数据和文件上传了。

0
0 Comments

对我来说,最简单的解决方案是逐个上传文件并将它们保存在临时文件中。

然后当我保存表单时,我加载临时文件并保存它。

原因:在控制器中同时结合Json和文件上传操作可能会遇到问题。

解决方法:逐个上传文件并保存在临时文件中,然后在保存表单时加载临时文件并保存。

0