假设我有一个看起来像这样的ASP.NET WebAPI控制器:
public class StuffController
{
[HttpGet]
[Route("api/v1/stuff/{id:int}")]
[ResponseType(typeof(Model))]
public async Task<IHttpActionResult> GetAsync(int id)
{
// ...
}
[HttpPut]
[Route("api/v1/stuff/{id:int}")]
[ResponseType(typeof(IHttpActionResult))]
public async Task<IHttpActionResult> UpdateAsync(int id, Model model)
{
// ...
}
[HttpPost]
[Route("api/v1/stuff")]
[ResponseType(typeof(IHttpActionResult))]
public async Task<IHttpActionResult> CreateAsync([FromBody] Model model)
{
// ...
}
}
无论如何,我是否可以从Angular应用(显然是在正确注入HttpClient的服务中)发送/上传/发布模型,模型(包含将从正文中提取的json数据)和包含文件的表单数据。 ..)?
问题是...我真的不知道如何:
const formData = new FormData();
const uploadReq = new HttpRequest('POST', url, formData, {
reportProgress: true,
headers: headers
});
就像是......
答案 0 :(得分:3)
发送MIME多部分请求(threshold value = 85
),每个blob是其自己的FormData条目:https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects-在服务器端,您可以使用ASP.NET从请求中提取不同部分。 import cv2
img = cv2.imread('test.png', 0)
threshold = 85
cv2.threshold(img,threshold,255,cv2.THRESH_BINARY,img)
cv2.imshow('test',img)
cv2.waitKey(0)
API:https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-2
您将需要更改控制器操作以不使用方法参数,而是直接从multipart/form-data
读取:
Request.Content.ReadAsMultipartAsync