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();
}
我需要读取来自我的摄像机的 [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();
}