ASP net core multipart/forma-data, 两个文件

ASP net core multipart/forma-data, two files

我需要读取来自我的摄像机的 [httppost] 请求,该请求发送带有车牌数据的图像文件和子文件。这是来自相机(用户手册)的请求的样子:

POST /alpv/receive.php HTTP/1.1\r\n  Host: 10.13.24.13\r\n  Content-Length: 7160\r\n  
Content-Type: multipart/form-data; boundary=------------------------3df4e8eee91da308\r\n    --------------------------3df4e8eee91da308  
Content-Disposition:  form-data;  name="event"; filename="20190204103017_10536event_7000175.json"
Content-Type: application/octet-stream  
{   "packetCounter":"7000175",  
 "datetime":"20190204 103017000",  
 "plateText":"\u004c\u0042\u0045\u0033\u0039\u0037",  
 "plateCountry":"SWE", 
  "plateConfidence":"0.716159",  
 "carState":"new",  
 "geotag":{"lat": 50.418114,"lon": 30.476213},  
 "imageType": "plate", 
  "plateImageType": "png", 
  "plateImageSize":  "0",  
 "carMoveDirection":"in", 
  "timeProcessing":"0",  
 "plateCoordinates":[1614, 880, 172, 28],  
 "carID":"18", 
  "GEOtarget":"Camera", 
  "sensorProviderID":"defaultID"  }  
--------------------------3df4e8eee91da308  
Content-Disposition:  form-data;  name="image";  filename="20190204103016_999776lp_LBE397_7000175.png"  Content-Type: application/octet-stream     <IMAGE DATA>    --------------------------3df4e8eee91da308-- 

所以,有两个文件:事件和图像。

这是我来自控制器的代码:

public ActionResult NewEvent([FromForm]DataFromCameraModel @event, [FromForm]IFormFile image)
{
return Ok();
}

public class DataFromCameraModel
{
public int packetCounter {get;set;}
public string Datetime {get;set;}
public string plateText {get;set;}
}

在调试模式下,我可以看到只找到图像文件,但在@event 模型中所有值都是 null/0;

如何从 json "event" 文件中读取数据?

发布的文件不能直接在方法参数中作为模型class寻址,可以作为另一个IFormFile

访问
public ActionResult NewEvent([FromForm]IFromFile @event, [FromForm]IFormFile image)
{
    // parse JSON data from @event
    using (var reader = new StreamReader(@event.OpenReadStream()))
    {
        var eventObj = JsonConvert.DeserializeObject<DataFromCameraModel>(reader.ReadToEnd());
    }

    return Ok();
}