在控制器中结合Json和文件上传
在控制器中结合Json和文件上传
我正在尝试使用Angular将包含json和文件的表单发送到一个控制器。\n
[HttpPost("Save", Name = "SaveReportRequest")] public ActionResultSave([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
,或者如何构建它才能使其工作?
问题的原因是在控制器中要同时处理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数据和文件上传了。